为什么不';当在另一个线程上调用时,我的draw函数无法工作

本文关键字:我的 draw 函数 工作 调用 线程 另一个 为什么不 | 更新日期: 2023-09-27 18:28:24

我正在制作一个连接到服务器并发送和接收数据的客户端。但是当从接收线程调用draw函数时,它不会绘制任何内容。尽管如果我用按钮调用它,它会正确绘制。有人能帮帮我吗?

注意:当我向它传递参数时,它可以通过按钮工作,但不能通过我的另一个线程获得接收。

  • x是绘制位置的x
  • y是绘制位置的y
  • b是要绘制的块

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);
    }}

感谢

为什么不';当在另一个线程上调用时,我的draw函数无法工作

您可以使用InvokeRequired和Invoke来确保Draw函数被gui线程调用!