Silverlight棱镜:如何等待两个事件

时间:2012-02-27 06:01:09

标签: silverlight-4.0 prism-4

我正在使用Prism进行应用 我有3个模块叫做A,B,C。

A触发事件x,B触发事件y。

C将听取这两个事件x和y。

如果事件x =>事件处理程序名为XEventHandler =>这将生成对象A.

如果事件y =>事件处理程序名为YEventHandler

在YEventHandler中,将使用对象A.所以我需要一些方法来处理这个:

  1. 如果创建了对象A =>如果模块C捕获y事件

  2. ,则将执行YEventHanlder
  3. 如果尚未创建对象A(x事件尚未被触发或者创建对象A的过程尚未完成)=> YEventHanlder需要等到对象A准备就绪并继续。

  4. 我该如何解决这个问题?

    感谢这么酷的社区。

1 个答案:

答案 0 :(得分:0)

这似乎是一项非常普遍的任务。 Eventhandler Y必须等待WaitHandle,例如AutoResetEvent。创建对象A时设置此ResetEvent。

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();
}