是否有与 Android 的runOnUiThread等效的 C#/Windows 窗体?
例如,假设我在工作线程上运行(长时间运行)任务,最后我想将结果发布到 GUI 控件(当然我不能从工作线程中做到这一点)。是否有一个像runOnUiThread这样简单的函数可以让我发布刷新显示以供 UI 线程处理?
是否有与 Android 的runOnUiThread等效的 C#/Windows 窗体?
例如,假设我在工作线程上运行(长时间运行)任务,最后我想将结果发布到 GUI 控件(当然我不能从工作线程中做到这一点)。是否有一个像runOnUiThread这样简单的函数可以让我发布刷新显示以供 UI 线程处理?
WinForms 中的每个控件都继承了Invoke
和BeginInvoke
方法。
Invoke将同步运行委托,而BeginInvoke将异步运行它。
执行此操作的典型方法是使用 System.Windows.Forms.Control:
control.BeginInvoke((MethodInvoker)delegate { ... });
但是,控件的句柄必须已经在 UI 线程上初始化。一个简单的
IntPtr ignored = control.Handle;
在 UI 线程上将实现这一点。
看Control.Invoke
方法。
来自 MSDN:“在拥有控件的基础窗口句柄的线程上执行指定的委托。”
如果您可以访问 winforms 控件或表单,只需在该控件或表单上调用Control.Invoke
或Control.BeginInvoke
。