我有一个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();
}