2010-11-11 16 views
4

檢查InvokeRequired和調用Invoke方法控制 和父表單如果我想處理來自另一個線程的控件,有什麼區別?爲父窗體或目標控件使用Invoke之間是否有區別?

if (theForm.InvokeRequired) 
    Invoke(...) 

或者

if (myControl.InvokeRequired) 
    myControl.Invoke(...) 

MSDN

,直到它發現有一個窗口句柄,如果電流控制的基本控件或窗體的Invoke方法搜索了控件的父鏈窗口句柄還不存在。

回答

7

這兩個具有相同的效果。你可以假設窗體和控件是在同一個線程上創建的。

+1

從技術上講,情況可能不是這樣。非常罕見,但Windows確實支持禁止SetParent()來打破該規則。例如,Adobe Acrobat Reader就是這樣做的。但是AxHost包裝器仍然與UI線程相關聯。 Winforms將會與你抗爭,並阻止你這樣做。你可以贏。 – 2010-11-11 15:40:56

相關問題