2012-02-27 18 views
1

我使用棱鏡我的應用程序和 我有3個模塊稱爲A,B,CSilveright棱鏡:如何等待兩個事件

一個觸發事件X,B觸發一個事件年。

C將聽取這兩個事件x和y。

在事件的情況下,x =>事件處理程序調用XEventHandler =>將生成對象A.

在事件Y的情況下=>事件處理程序稱爲YEventHandler

在YEventHandler,對象A將被用於。所以,我需要一些方法來使處理這個問題是:

  1. 如果創建對象A => YEventHanlder將被執行,如果模塊C抓Ÿ事件

  2. 如果尚未創建對象的(X事件尚未被觸發或創建對象A的過程尚未完成)=> YEventHanlder需要等待,直到對象A準備好並繼續。

我該如何解決這個問題?

感謝這麼酷的社區。

回答

0

這似乎是一個相當普遍的任務。事件處理者Y必須等待WaitHandle,例如, AutoResetEvent。這個ResetEvent在創建對象A時設置。

private AutoResetEvent objectACreated = new AutoResetEvent(false); 
private A a = null; 

void HandlerY(object sender, EventArgs args) 
{ 
    if(objectACreated.WaitOne()) 
    { 
     a.DoSomething(); 
    } 
} 

void HandlerX(object sender, EventArgs args) 
{ 
    a = new A(); 
    objectACreated.Set(); 
}