c# - 在 Silverlight 中同步操作

标签 c# delegates action

我有一个 Silverlight 应用程序,它使用操作从模型中获取数据(它再次从 WCF 服务中获取数据)。

我需要以某种方式同步两个 ActionCallbacks,或者等待它们,然后执行一些代码。

示例:

_model.GetMyTypeList(list =>
{
    MyTypeList.AddRange(list);
});

_model.GetStigTypeList(list =>
{
    StigTypeList.AddRange(list);
});

doSomethingWhenBothHaveReturned();

我知道我可以使用计数器来跟踪返回了多少,但是没有更好的方法吗?

编辑: user24601 有一个很好的答案,但 CountdownEvent 在 silverlight 中不存在,还有其他好的想法吗? :)

最佳答案

是的,您需要一个计数器。 “更优雅”的解决方案是使用倒计时事件:

using (CountDownEvent countDownEvent = new CountDownEvent(2))
{
    _model.GetMyTypeList(list =>
    {
        MyTypeList.AddRange(list);
        countDownEvent.Signal();
    });

    _model.GetStigTypeList(list =>
    {
        StigTypeList.AddRange(list);
        countDownEvent.Signal();
    });

    countdownEvent.Wait();
    doSomethingNowThatWereComplete();
}

关于c# - 在 Silverlight 中同步操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8879870/

相关文章:

c# - WPF MVVM 在 ViewModel 中存储用户控件?一个大禁忌?

c# - 如何在SSRS中传递参数

c# - 从负值到正转换的 TimeSpan 差异

c# - 任务和垃圾收集存在哪些问题?

php - 在 PHP 中执行委托(delegate)或回调的正确方法

swift - 在 TableView 中实现委托(delegate)方法

ruby-on-rails - 创建新的Rails Action 行不通吗?

iphone - 设置 UITextFieldDelegate 并在 UITextField dealloc 后释放,自包含

java - 如何使用 Java Swing Actions 在 Netbeans 中创建菜单项和工具栏项

c# - 如何找出委托(delegate)返回 void ?