我有 2 个解耦类,A 类和 B 类,这两个类使用 Mircosoft CAB 框架通过事件发布和事件订阅相互通信:
public class ClassA
{
[EventPublication("ActionFired", PublicationScope.WorkItem)]
public event EventHandler<EventArgs> ActionFired;
public void MethodA()
{
// Some code 1
DoAction1();
// Some code 2
}
private void DoAction1()
{
if (ActionFired != null)
ActionFired(this, EventArgs.Empty);
}
}
public class ClassB
{
[EventSubscription("ActionFired")]
public void OnActionFired(object sender, EventArgs e)
{
// Here some background work using BackgroundWorker
}
private void bagroudThread_DoWork(object sender, DoWorkEventArgs e)
{
// work
}
private void bagroudThread_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
}
}
在 MethodA 中,我们调用 DoAction1(); 触发事件发布,订阅者在后台工作线程中执行其处理程序,这里的问题是我希望“某些代码 2”(在调用 DoAction1() 之后出现)仅在后台工作完成后执行,但这里是 DoAction1 () 是异步执行的,并且在 classB 后台工作人员完成工作之前执行“一些代码 2”。如何控制 MethodA 的执行?
问候