我有一个Silverlight应用程序,它使用操作从模型中获取数据(它再次从WCF服务中获取数据)。
我需要同步两个actioncallback,或者等待它们,然后执行一些代码。
例子:

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

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

doSomethingWhenBothHaveReturned();

我知道我可以用一个计数器来记录有多少人已经返回,但是没有更好的方法来做到这一点吗?
编辑:USER 24601有一个很好的答案,但是在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();
}

08-05 18:31