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中文网其他相关文章!