C# でのノンブロッキング メソッド呼び出し: ThreadPool.QueueUserWorkItem
と Task.Run
C# では、メソッドをノンブロックで実行できるため、メソッドの完了を待たずにスレッドが実行を継続できます。
最も直接的な方法は、ThreadPool.QueueUserWorkItem
メソッドを使用することです。これは、非同期で実行されるメソッドを指定する WaitCallback
デリゲートをパラメーターとして受け取ります。
例:
<code class="language-csharp">using System.Threading; class Foo { static void Main() { // FireAway将在后台执行 ThreadPool.QueueUserWorkItem(o => FireAway()); Console.WriteLine("立即执行"); } static void FireAway() { Thread.Sleep(5000); Console.WriteLine("5秒后执行"); } }</code>
この例では、FireAway
メソッドがスレッド プールのキューに入れられ、メイン スレッドは非同期呼び出しの開始直後に実行を継続します。
別の方法: Task.Run
タスクを非同期で実行するためのより現代的で簡潔な方法は、Task.Run
メソッドを使用することです。このメソッドは、非同期操作を表す Task
オブジェクトを返します。
例:
<code class="language-csharp">using System.Threading.Tasks; class Foo { static void Main() { // FireAway将在后台执行 Task.Run(() => FireAway()); Console.WriteLine("立即执行"); } static void FireAway() { Thread.Sleep(5000); Console.WriteLine("5秒后执行"); } }</code>
ThreadPool.QueueUserWorkItem
と Task.Run
はどちらも、C# でメソッドをノンブロッキングに実行する効率的な方法を提供します。ただし、これらのテクノロジーをさまざまなシナリオで使用する場合は、潜在的な影響と制限を考慮することが重要です。
以上が`ThreadPool.QueueUserWorkItem` と `Task.Run` を使用して C# で非ブロッキング メソッド呼び出しを行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。