Silveright Prism: как ждать двух событий - PullRequest
1 голос
/ 27 февраля 2012

Я использую Prism для своего приложения и получил 3 модуля с именами A, B, C.

A запускает событие x, B запускает событие y.

C будет прослушиватьсяэти два события x и y.

В случае события x => обработчик события с именем XEventHandler => который будет генерировать объект A.

В случае события y => обработчик события с именем YEventHandler

В YEventHandler будет использоваться объект А.Поэтому мне нужен какой-то способ справиться с этим так:

  1. Если объект A создан => YEventHanlder будет выполнен, если модуль C перехватит y Событие

  2. Если объект A еще не создан (событие x еще не было запущено или процесс создания объекта A еще не завершен) => YEventHanlder необходимо дождаться, пока объект A не будет готов, и продолжить.

Как я могу решить эту проблему?

Спасибо за такое классное сообщество.

1 Ответ

0 голосов
/ 27 февраля 2012

Это, кажется, довольно распространенная задача.Обработчик событий 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();
}
...