Main
メソッドとasync
モディファイア:ソリューション課題:キーワードを使用した非同期プログラミングは、古いコンソールアプリケーションのasync
メソッドで直接サポートされていません。 この制限により、アプリケーションのエントリポイント内でコードの単純な非同期実行を防止します。
Main
開発環境に応じて、いくつかの回避策が
メソッド内で非同期操作を可能にします。Main
1。 Visual Studio 2017 Update 3以降:
Visual Studio(2017 Update 3以降)の最新バージョンの最新のバージョン メソッドを直接サポートしています。
メソッドのreturnタイプをまたはasync
:Main
に変更するだけです
Main
Task
Task<T>
2。 メインスレッドのブロック(古いビジュアルスタジオの場合):
<code class="language-csharp">class Program { static async Task Main(string[] args) { Bootstrapper bs = new Bootstrapper(); var list = await bs.GetList(); } }</code>
古いビジュアルスタジオバージョンを使用している場合、非同期操作が完了するまでメインスレッドを明示的にブロックすることにより、非同期コードを実行できます。 このアプローチは、
ヘルパーメソッド()を呼び出し、
を使用して完成を待ちます。<code class="language-csharp">class Program { static void Main(string[] args) { MainAsync(args).GetAwaiter().GetResult(); } static async Task MainAsync(string[] args) { Bootstrapper bs = new Bootstrapper(); var list = await bs.GetList(); } }</code>
3。 非同期コンテキスト(例:asyncex)を活用する:async
MainAsync
GetAwaiter().GetResult()
より堅牢な非同期制御フローについては、
専用のコンテキスト内で非同期実行を管理します。
これらの方法のいずれかを採用することにより、非同期プログラミングをコンソールアプリケーションのNito.AsyncEx
メソッドに統合し、効率と応答性を向上させることができます。
以上がコンソールアプリのメインメソッドで「Async」修飾子を使用できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。