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

Ale*_* 75 3 .net c# task task-parallel-library thread-sleep

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

Thread.Sleep(500);
Run Code Online (Sandbox Code Playgroud)

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

Task.Delay(500).Wait();
Run Code Online (Sandbox Code Playgroud)

考虑到相对较小的延迟,使用异步版本真的有优势吗(Task.Delay())?
如果延迟是几毫秒或几秒,它会改变吗?
更重要的是......击败他不是.Wait()为了异步吗?

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

第二种方法不是浪费更多资源吗?(正如这里的一些评论似乎表明的那样)

Mar*_*ell 9

await Task.Delay(500);\n
Run Code Online (Sandbox Code Playgroud)\n

几乎不 应该使用\xe2\x80\xa0.Wait(),但是Task.Delay(...).Wait()它是一个特殊的“不”圈。

\n

Thread.Sleep(...)如果您对阻塞当前线程感到满意,那就可以了;但是,您不应该在并发应用程序(例如服务器)上执行此操作。

\n
\n

\xe2\x80\xa0是的,有些场景是可以接受甚至是必要的;但如果你必须问:“不”是一个很好的默认答案;对此的任何完整答案都涉及多页上下文、细微差别等。

\n