我希望对此有所澄清。我知道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/