送信したジョブのステータスを取得するために特定のサーバーをポーリングする必要がある機能があります。形式は次のとおりです。
public Foo PollForJobOutcomeAsync(int pollSpan, Action<Foo> callback)
{
var caller = new AsyncMethodCaller((p, cb) =>
{
PollForJobOutcome(p);
cb(this);
});
caller.BeginInvoke(pollSpan, callback, null, null);
return this;
}
public void PollForJobOutcome(int pollSpan)
{
while (job not completed)
{
DoSomething();//send request to server, change job status according to response
Thread.Sleep(pollSpan);
}
}
残念ながら、PollJobOutcomeAsync
メソッドの実行が終了する前にメソッドを呼び出すメイン スレッドが終了すると、目的のステータス更新が得られません。メインスレッドが終了する前にこれらの関数の実行を確実に終了するにはどうすればよいですか?