我希望对此有所澄清。我知道Task.Delay将在内部使用一个Timer,它显然是基于任务的(可等待的),而Thread.Sleep将导致线程被阻塞。但是,在任务上调用.Wait是否会导致线程被阻塞?

如果不是,人们会认为Task.Delay(2500).Wait()优于Thread.Sleep(2500)。这与SO question/answer here稍有不同,因为我正在调用.Wait()

最佳答案

在未完成的任务上使用Wait确实会阻塞线程,直到任务完成。

使用Thread.Sleep更加清晰,因为您显式地阻塞了一个线程,而不是隐式地阻塞了一个任务。

最好使用Task.Delay的唯一方法是,它允许使用CancellationToken,因此您可以根据需要取消该块。

关于c# - Thread.Sleep(2500)与Task.Delay(2500).Wait(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34052381/

10-13 03:35