2009-09-05 59 views
1

我有一個後臺線程運行引發事件,但我怎樣才能確保使用NET CF線程安全地調用這些事件?線程安全調用NET CF

我會在NET平臺上使用ISyncronizeInvoke,但我無法在NET CF上找到它。我確定有相當的可用....或?

回答

7

緊湊架構確實Control.Invoke/BeginInvoke,但我相信這是限於EventHandler委託(與任何其他代表扔在執行時除外)。

假設你實際ISynchronizeInvoke實例將是一個UI控件,我只是通過引用作爲Control到任何需要它。如果你想使用想要使用一個接口,你可以隨時創建自己的接口,然後執行一個包裝Control

+1

正確,CF確實有Control.Invoke/BeginInvoke/InvokeRequired。但是在類Control中沒有引入接口。 – 2009-09-05 13:33:03

+0

謝謝,編輯會讓這個更加自信:) – 2009-09-05 15:09:32

3

是的,它是在.NET CF可用的,這裏是從這樣一個項目的摘錄:
SampleMethod()從另一個線程調用。

delegate void SimpleInvokeDelegate(); 
private void SampleMethod() 
{ 
    if (InvokeRequired) 
    { 
     Invoke(new SimpleInvokeDelegate(SampleMethod)); 
    } 
    else 
    { 
     // Update UI elements here. 
    } 
}