C#跨线程操作报错

标签 c# multithreading

在用于模拟 LAN Messenger 的 C# 程序中,我有一个用于 beginreceive 的回调函数,我需要在其中显示在特定文本框中接收到的文本。 this.textBox1.Text = sb.ToString(); 但是这样做时,我收到了一个跨线程操作无效错误。 我确实意识到我需要使用 object.invoke 方法,但是你能不能给我提供调用委托(delegate)的完整代码,因为在线程处理方面我仍然很天真。谢谢

最佳答案

您需要将工作推回到 UI 上;幸运的是,这很容易:

this.Invoke((MethodInvoker) delegate {
    this.textBox1.Text = sb.ToString();
});

这使用 C# 的“匿名方法”和“捕获变量”功能来完成所有繁重的工作。在 .NET 3.5 中,您可能更喜欢使用 Action,但这并没有什么区别:

this.Invoke((Action) delegate {
    this.textBox1.Text = sb.ToString();
});

关于C#跨线程操作报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/694397/

相关文章:

multithreading - 多线程能提高性能吗?如何?

java - 如何从从 C# 接收到的字节数组加载图像?安卓应用

java - 为什么等待循环条件在多线程上下文中是安全的?

java - 事件驱动的 future <V> - 线程池

java - 多线程环境下的 Neo4j 图操作

java - 控制Android Java线程

c# - NGen 和 Gacutil 最佳实践

c# - IEnumerable 到用逗号分隔的字符串?

c# - 为什么不总是处理?

c# - 升级到 .net 5 程序集缺少框架版本