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