У меня есть 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() выполняется асинхронно, а «некоторый код 2» выполняется до того, как фоновый работник класса B завершит работу.Как я могу контролировать выполнение MethodA?
С уважением