【问题标题】:Silveright Prism: How to wait for two eventsSilveright Prism:如何等待两个事件
【发布时间】:2012-02-27 06:01:08
【问题描述】:

我在我的应用程序中使用 Prism,并且 我有 3 个模块,分别称为 A、B、C。

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

C 会监听 x 和 y 这两个事件。

如果事件 x => 事件处理程序称为 XEventHandler => 将生成对象 A。

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

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

  1. 如果创建了对象 A => 如果模块 C 捕获 y 事件,则将执行 YEventHanlder

  2. 如果对象 A 尚未创建(x 事件尚未触发或创建对象 A 的过程尚未完成)=> YEventHanlder 需要等到对象 A 准备好并继续。

我该如何解决这个问题?

感谢这么酷的社区。​​p>

【问题讨论】:

    标签: silverlight-4.0 prism-4


    【解决方案1】:

    这似乎是一个很常见的任务。事件处理程序 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();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多