2013-04-04 57 views
0

假設像下面這樣的方法和標準的.Net事件,而不關心多線程。當你想要確保事件2處理程序在事件1處理程序完成之前不會啓動時,使用什麼樣的好模式?事件計時問題

SomeMethod(){ 
    RaiseEvent1(); 
    RaiseEvent2(); 
} 

編輯

認爲應該爲克雷格說。如果有100個實例的壓力測試有時會失敗,看起來像是比賽條件,那麼你會看到什麼特別的地方?

回答

2

完全如此,只要RaiseEvent1和RaiseEvent2不是多線程RaiseEvent2只會在RaiseEvent1完成後纔會被觸發。如果他們是多線程使用手動/自動重置事件,以標誌是否已完成或沒有。

看看這裏給出的例子:Manual Reset Event

+0

+1的限制提到通過'ManualResetEvent' – Clint 2013-04-04 21:34:16

+0

@ craig1231。請參閱編輯並讓我知道是否有任何想法。乾杯 – Berryl 2013-04-04 21:39:19

+0

我不確定我完全理解你的編輯......它取決於正在執行什麼以及它爲什麼失敗......沒有這些信息我不知道 – craig1231 2013-04-04 21:47:33