2012-10-19 109 views

回答

3

WinForms中的每個控件都繼承了InvokeBeginInvoke方法。

Invoke將同步運行代理,而BeginInvoke異步運行它。

+0

何時使用同步Invoke更適合使用異步BeginInvoke? – scatmoi

+1

幾乎沒有。如果替代方案使用一堆異步消息溢出UI輸入隊列,它有時很有用。 –

1

看看Control.Invoke的方法。

從MSDN:「在擁有該控件的基礎窗口句柄的線程上執行指定的委託。

1

做到這一點的典型方法是用一個System.Windows.Forms.Control的:

control.BeginInvoke((MethodInvoker)delegate { ... }); 

但是,控件的句柄必須已經在UI線程上初始化。一個簡單的

IntPtr ignored = control.Handle; 

在UI線程將完成。

相關問題