.net Thread.Sleep() 与 Task.Delay().Wait()

问题描述 投票:0回答:1

异步方法中的代码库是这样的:

Thread.Sleep(500);

一位同事将其重构为这样:

Task.Delay(500).Wait();

考虑到相对较小的延迟,使用异步版本真的有优势吗(

Task.Delay()
)?
如果延迟是几毫秒或几秒,它会改变吗?
更重要的是...不是
.Wait()
击败他创建异步的目的吗?

为了提供更多上下文,这是在平均每分钟运行一次的后台进程中执行的。

第二种方法不是浪费更多资源吗? (正如这里的一些评论似乎表明的那样:
Task.Delay() 和 new Task(()=>Thread.Sleep()) 的区别 )

.net thread-sleep
1个回答
0
投票
await Task.Delay(500);

你应该几乎从不使用

.Wait()
,但是
Task.Delay(...).Wait()
是一个特殊的“不”圆圈。

如果您愿意阻塞当前线程,则

Thread.Sleep(...)
ok;不过,您不应该在并发应用程序(例如服务器)上执行此操作。

© www.soinside.com 2019 - 2024. All rights reserved.