2011-08-10 22 views
3

メインスレッドが非同期メソッド呼び出しを待つ必要がなく、非同期メソッド呼び出しが完了するのを待つべきでない状況で、プログラムによって新しいスレッドを作成する必要があるのでしょうか?非同期メソッド呼び出し中のメインスレッド終了?

この場合、一部のデータをデータベースに保存するときに非同期呼び出しが行われますが、これは呼び出しメソッドが次に最後に行う処理です(最後の処理でデータが返されます)。だから、待っても意味がないようです(特に、他のメソッドが戻りデータを待っているため)が、呼び出し直後に呼び出しメソッドが終了すると、asyncメソッドが正しく実行されないことがあります。

このような状況でのベストプラクティスは何ですか?私は現在、.NET 3.5にバインドされています。

答えて

1

「呼び出しメソッド」がアプリケーションのエントリポイント(別名Main())であり、プロセス自体が終了した場合にのみ問題になります。このシナリオでは、が完了するのを待つことを指示できるようにAPIを設計します。これはダイレクト(待つことができる返品オブジェクトを使用する)または間接的(ManualResetEventなどを設定するコールバックを提供する)です。

定義上、非同期メソッド呼び出しはです。もう1つのスレッドを含むです。したがって、そのスレッドを複製する必要はありません(実際にはそうしないでください)。ただし、必要な「終了*」が、通常はコールバックを介してであることを確認する必要があります。

関連する問題