我需要等待一个事件完成才能继续。
这是我的代码:
foreach (KeyValuePair<string, Stream> pair in this.XMLCollection)
{
...
this.eventAggregator.GetEvent<LogToApplicationEvent>().Publish(credentials);
//wait
...
}
在继续之前,我需要等待“登录”事件才能执行。
我尝试使用Task.Factory
,但它对我不起作用,或者我无法正确使用它......
此代码位于演示者,但该事件会更新主UI。
//publish
public virtual void Publish(TPayload payload)
{
base.InternalPublish(payload);
}
答案 0 :(得分:2)
Event Aggregator
发布和订阅活动模式为synchronous
。你不用担心它。
因此,在订阅者完成其委托的执行之前,它不会恢复。
假设 - 您使用的是Microsoft提供的内置Event Aggregator课程。
答案 1 :(得分:2)
至少有两种可能的解决方案:
BackgroundWorker的
使用BackgroundWorker
执行代码,并使用RunWorkerCompleted
事件执行完成后运行的代码。
BackgroundWorker将基于事件的异步模式包装成一个非常易于使用的机制,完成进度报告和取消。请参阅此BackgroundWorker tutorial
以及此SO答案。
任务(.NET 4.0及更高版本)
使用Task
对象,并使用ContinueWith
方法定义完成第一个任务后需要执行的代码。