コンソールアプリでの非同期プログラミング
非同期プログラミング:実用的なガイド
コンソールアプリケーションのメソッド内で非同期コードを実行するには、Main
メソッド自体が制限されているため、慎重に検討する必要があります。 この記事では、非同期実行を達成するための効果的な戦略を調査します
Main
Visual Studio 2017 Update 3(15.3)の前に、非同期
メソッドを返すことができますMain
またはMain
。
Task
Task<T>
一見単純に見えますが、このアプローチは
<code class="language-csharp">class Program { static async Task Main(string[] args) { // Asynchronous operations here... } }</code>
オペレーターの機能が重要です:不完全な待望に遭遇した場合、GetAwaiter().GetResult()
メソッドがすぐに戻ることを許可し、待望が完了したら実行を再開します。 重要なことに、
await
コンソールアプリケーションでは、これには課題があります。 オペレーティングシステムへのメソッドのリターンシグナルプログラムプログラムの終了。
これを克服するために、「非同期メインループ」として機能するカスタムコンテキストを使用できます。 async
(await
nugetパッケージから)のようなライブラリは、この機能を提供します。
または、非同期タスクが結論付けるまで、メインスレッドを明示的にブロックできます。
Main
またはAsyncContext
がスローする可能性があります。 これにより、クリーンなエラー処理が保証されます。 プロジェクトのニーズとエラー処理戦略に最適な方法を選択してください。
以上がコンソールアプリケーションのメインメソッドで非同期コードを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。