2012-02-27 4 views
1

및 기다릴 어떻게 A가 이벤트 X를 발생Silveright 프리즘 :이 개 내 응용 프로그램에 대한 내가 프리즘을 사용하고 이벤트

가, B는 이벤트 Y를 발생, 3 개 모듈이 호출 된 B, C를 얻었다.

C는이 두 이벤트 x와 y를 수신합니다. 이벤트의 경우

X => 이벤트 핸들러 XEventHandler => 객체 A.를 생성 어느

이벤트 (Y)의 경우, => 이벤트 핸들러 YEventHandler에서 YEventHandler

라고

하는 사용될를 객체라고 . 그래서 나는 그래서 이것을 처리 할 수있는 방법이 필요합니다 : 개체 A가 생성됩니다

  1. 경우 => YEventHanlder이 실행됩니다 경우 모듈 C 캐치 Y 이벤트

  2. 객체 A가 아직 생성되지 않은 경우 (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(); 
}