gpt4 book ai didi

c# - 我应该始终使用 Task.Delay 而不是 Thread.Sleep 吗?

转载 作者:太空狗 更新时间:2023-10-30 00:40:17 25 4
gpt4 key购买 nike

<分区>

我最近看到几条建议指出永远不要在生产代码中使用 Thread.Sleep(最近在 this SO question 中)。其中许多主张改用 Task.Delay。我发现的大多数解释都使用 UI 应用程序作为示例,因为 Task.Delay 的优势很明显(不会阻塞 UI)。

在我的例子中,我在等待循环中使用 Thread.Sleep 轮询 WCF 服务的特定条件,如下所示:

DateTime end = DateTime.UtcNow + TimeSpan.FromMinutes(2);
while (DateTime.UtcNow < end)
{
if (ExternalServiceIsReady() == true)
{
return true;
}
Thread.Sleep(1000);
}

在这种情况下,Task.Delay 的以下潜在优势似乎不适用:

  • 相对于大约 15 毫秒的典型计时器分辨率, sleep 时间相当长,因此 Task.Delay 的准确性增加似乎微不足道。
  • 该进程是单线程(非 UI)并且必须阻塞直到条件为真,因此使用 await 在这里没有优势。
  • 不需要取消延迟的能力。

在这种情况下是否适合使用 Thread.Sleep?用 Task.Delay(1000).Wait() 替换我的 sleep 线有什么好处(如果有的话)?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com