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中文網其他相關文章!