为什么不';当在另一个线程上调用时,我的draw函数无法工作
本文关键字:我的 draw 函数 工作 调用 线程 另一个 为什么不 | 更新日期: 2023-09-27 18:28:24
我正在制作一个连接到服务器并发送和接收数据的客户端。但是当从接收线程调用draw函数时,它不会绘制任何内容。尽管如果我用按钮调用它,它会正确绘制。有人能帮帮我吗?
注意:当我向它传递参数时,它可以通过按钮工作,但不能通过我的另一个线程获得接收。
x
是绘制位置的xy
是绘制位置的yb
是要绘制的块
GetColor()
方法确实有效——我已经测试过了,它可以正确地从按钮中提取,但不能从接收线程中提取。
public void Draw(int x, int y, int b)
{
MessageBox.Show(x + " " + y + " " + b);
Graphics g = this.CreateGraphics();
Pen pen = new Pen(getcolor(b), 1);
g.FillRectangle(pen.Brush, x, y, 1, 1);
}
我试着调用,但我想我搞砸了,或者其他什么,如果有人能告诉我这个代码出了什么问题,谢谢
public void Draw(int x,int y,int b){
if (this.InvokeRequired)
{
// Reinvoke the same method if necessary
BeginInvoke(new MethodInvoker(delegate() { Draw(x, y, b); }));
}
else
{
MessageBox.Show(x + " " + y + " " + b);
Graphics g = this.CreateGraphics();
Pen pen = new Pen(getcolor(b), 1);
g.FillRectangle(pen.Brush, x, y, 1, 1);
}}
感谢
您可以使用InvokeRequired和Invoke来确保Draw函数被gui线程调用!