C# 跨线程操作调用后无效

标签 c# multithreading invoke

我在跨线程操作方面遇到问题。

我有以下方法

 private void UpdateLabel(string text)
    {
        if (this.richTextRxMessage.InvokeRequired)
        {
            this.Invoke(new Action(() => this.UpdateLabel(text)));
            return;
        }
        else
        {
            this.richTextRxMessage.AppendText(text);
        }
    }

我称之为

UpdateLabel(richTextRxMessage.Text + szData);

我不明白为什么我仍然遇到这个异常

最佳答案

定义一个委托(delegate),例如

  public delegate void UpdateFormText(string text);

并更改您的方法,例如

private void UpdateLabel(string text)
{
    if (!this.richTextRxMessage.InvokeRequired)
    {
        this.richTextRxMessage.Text=text;

    }
    else
    {
        var s = new UpdateFormText(UpdateLabel);
        Invoke(s, new object[] { text});
    }
}

关于C# 跨线程操作调用后无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16157692/

相关文章:

c# - asp.net mvc 中的 File() 是否关闭流?

c# - 在 WP8.1 项目中找不到 System.Net.Sockets

java - URLClassLoader + loadClass + 在独立进程上调用 main 方法? java

c# - 在 C# 中使用 OLEDB 从 Excel 中选择单元格地址

c# - 我可以为重写的方法调用 base 吗

.net - 多核使用、线程、线程池

python - Python中的可中断线程连接

Java notify() 在 wait() 之前被调用

c++ - 带成员函数的 std::is_nothrot_invocable

javascript - 使用 JavaScript 调用 WebService