クラス A とクラス B の 2 つの分離されたクラスがあります。これら 2 つのクラスは、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 バックグラウンド ワーカーが作業を完了する前に「some code 2」が実行されます。MethodA の実行を制御するにはどうすればよいですか?
よろしく