2013-04-04 52 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