本文主要是介绍C# Task.Delay \ Sleep,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.Thread.Sleep()是同步延迟,Task.Delay()是异步延迟。
2.Thread.Sleep()会阻塞线程,Task.Delay()不会。
3.Thread.Sleep()不能取消,Task.Delay()可以。
4.Task.Delay()实质是创建一个运行给定时间的任务,Thread.Sleep()使当前线程休眠给定时间。
Task.Delay()和Thread.Sleep()最大的区别是Task.Delay()旨在异步运行,在同步代码中使用Task.Delay()是没有意义的;
通常使用await关键字调用Task.Delay()。
异步与阻塞: Task.Delay是异步的,它不会阻塞调用线程;而 Thread.Sleep是阻塞的,它会阻塞当前线程。在UI应用程序中,阻塞线程会导致应用程序无响应,因此应避免使用 Thread.Sleep。
资源消耗: Thread.Sleep会创建并销毁一个额外的线程,这比 Task.Delay更消耗资源。在大多数情况下,使用 Task.Delay更为高效。
灵活性: Task.Delay可以接受一个 CancellationToken参数,这使得它可以很容易地集成到取消逻辑中。而 Thread.Sleep没有这样的功能。
实战示例: 考虑一个简单的UI应用程序,其中有一个按钮,点击后会显示一条消息,然后等待3秒后显示另一条消息。使用 Task.Delay:
这篇关于C# Task.Delay \ Sleep的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!