(別のプロジェクトで) クラス メソッドを実行するコンソール アプリがあります。このメソッドは、Web サービスへの POST を非同期的に実行し (これは 3 分間の長い操作です)、POST の影響を受けたレコードの数を返すコールバックを持っています。その間、プログラムは 3 分もかからない他のことを続け、プログラムはコールバックが戻る前に終了します。
過去に、完了を防ぐために以下に示すように ManualResetEvent を使用しましたが、この場合、私のメソッドは別のクラス ライブラリにあり、できるだけクリーンに保ちたいと考えています。
static ManualResetEvent resetEvent = new ManualResetEvent(false)
static void Main()
{
CallAsyncMethod();
// Do other things...
resetEvent.WaitOne(); // Blocks until "set"
}
void AsyncMethodCallback()
{
// Do processing on completion...
resetEvent.Set(); // Allow the program to exit
}
呼び出されたクラスを実行フラグで汚染することなく、これを達成するためのクリーンなパターンを考え出す手助けをいただければ幸いです。