2012-02-27 3 views
1

と を待つためにどのように私はAがイベントXを起動Silveright Prismは:2私のアプリケーションのために、私はプリズムを使用していたイベント

は、Bは、イベントyを発射し、3つのモジュールはAと呼ばれるB、Cを得ました。

Cは、これら2つのイベントxとyを聴かれます。

イベントX =>イベントハンドラの場合

はYEventHandlerでYEventHandler

呼び出されるイベントY =>イベントハンドラの場合、オブジェクトA

を生成するどのXEventHandler =>と呼ばれる、Aが使用されるオブジェクト。だから私は、なるようにこれを処理するためにいくつかの方法が必要です:

  1. オブジェクトAが作成されている場合は、オブジェクトAがまだ作成されていない場合=> YEventHanlderは、モジュールCキャッチyのイベント

  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(); 
} 
関連する問題