歴史的に、Visual Studioコンパイラは、メインメソッドでのAsync修飾子の使用を制限しています。これは、コンソールプログラムの自然同期動作の非同期実装を防ぐためです。
非同期メインのサポート
行動の理解
非同期メインメソッドでは、「待ち望んでいる」キーワード表示は、オブジェクト(タスクなど)がメソッドを完了するのを待ってから、メソッドに戻ることができます。ただし、コンソールアプリケーションでは、メインメソッドの返却が手順から撤回されます。
手順が終了するのを避けてください手順が終了するのを防ぐために、メイン方法の非同期互換性と互換性のあるコンテキストを提供する必要があります。このコンテキストは、非同期操作の操作中にアクティビティ状態でプログラムを維持します。
<code class="language-csharp">class Program { static async Task Main(string[] args) { // 异步代码在此处 } }</code>
nugetライブラリ:
nito.asyncex nugetバッグのasynccontextを使用します。非同期ctp:
非同期CTPのgoneralthreadedaffinecontext(利用可能な場合)。カスタムメインループ:asynccontextまたは非同期CTPを使用して、独自のドラフト所有者を実現します。
のメインスレッドを妨害します 別の方法は、非同期作業が完了するまでメインコンソールスレッドをブロックすることです。
以上がコンソールアプリケーションの主な方法を非同期にすることはできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。