C# での効率的なファイア アンド フォーゲットの実装
C# では、呼び出し元をブロックせずに実行する関数である「ファイア アンド フォーゲット」メソッドを作成する方法がいくつか用意されています。 WCF の [OperationContract(IsOneWay = true)]
属性は一般的なアプローチでしたが、より単純な代替方法の方がパフォーマンスが向上します。
単純な非ブロッキングメソッド呼び出し
これらのオプションは、迅速かつ効率的なノンブロッキング実行を提供します。
ThreadPool.QueueUserWorkItem
: これにより、メソッドがスレッド プールに追加され、バックグラウンド スレッドで実行されます。<code class="language-csharp">ThreadPool.QueueUserWorkItem(o => FireAway());</code>
Task.Run
: .NET 4.0 で導入された Task.Run
は、スレッド プール上でタスクを作成し、スケジュールします。<code class="language-csharp">Task.Run(() => FireAway());</code>
両方のメソッドは FireAway
を非同期に起動し、バックグラウンド タスクの実行中にメイン スレッドを続行させます。
ノンブロッキングメソッドに関する重要な考慮事項
非ブロッキングは完了を保証するものではないことに注意してください。 呼び出されたメソッドは、プログラムが終了する前に終了しない可能性があります。 メソッドの成功がアプリケーションの機能にとって重要である場合、確実に完了するために追加のメカニズムが必要になります。 これには、特に ASP.NET のような早期終了が問題になる可能性がある環境では、スレッドのブロックや専用の完了処理が含まれる場合があります。
以上がC# で Fire-and-Forget メソッドを効率的に実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。