c# - 如何在 C# 中从工作线程发布 UI 消息

标签 c# windows winforms multithreading message

我正在用 C# 编写一个简单的 winforms 应用程序。我创建了一个工作线程,我希望主窗口响应完成其工作的胎面——只需更改文本字段中的一些文本,testField.Text =“Ready”。我尝试了事件和回调,但它们都在调用线程的上下文中执行,你不能从工作线程执行 UI。

我知道如何在 C/C++ 中执行此操作:从工作线程调用 PostMessage。我假设我可以从 C# 中调用 Windows API,但是没有更具体的 .NET 解决方案吗?

最佳答案

在来自已完成线程的事件回调中,使用 InvokeRequired 模式,正如对这篇 SO 帖子的各种回答所展示的那样。

C#: Automating the InvokeRequired code pattern

另一种选择是使用 BackgroundWorker 组件来运行您的线程。 RunWorkerCompleted 事件处理程序在启动工作线程的上下文中执行。

关于c# - 如何在 C# 中从工作线程发布 UI 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5316296/

相关文章:

c# - 在 Entity Framework 中按子项排序不返回排序列表

windows - IIS7中不同的域到不同的页面

c# - 屏幕截图中未捕获对话框和菜单更改

c# - 如何获得 child 控制权?

javascript - ASP.NET MVC 中的自定义输入格式

c# - FormsAuthentication.SignOut 抛出 NullReferenceException

c# - MouseHover 和 MouseLeave 事件控制

javascript - 如何处理 Windows 8 WinJS 游戏中的分辨率?

windows - 如何为windows和linux电脑设置通用的emacs环境?

c# - 检查父级的属性是否已更改