我正在使用Prism进行应用 我有3个模块叫做A,B,C。
A触发事件x,B触发事件y。
C将听取这两个事件x和y。
如果事件x =>事件处理程序名为XEventHandler =>这将生成对象A.
如果事件y =>事件处理程序名为YEventHandler
在YEventHandler中,将使用对象A.所以我需要一些方法来处理这个:
如果创建了对象A =>如果模块C捕获y事件
如果尚未创建对象A(x事件尚未被触发或者创建对象A的过程尚未完成)=> YEventHanlder需要等到对象A准备就绪并继续。
我该如何解决这个问题?
感谢这么酷的社区。 p>
答案 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();
}