Dav*_*ine 7 c# multithreading task task-parallel-library async-await
我想要清楚一点.我知道Task.Delay内部会使用一个Timer,它显然是基于任务的(等待),但Thread.Sleep会导致线程被阻塞.但是,在任务上调用.Wait会导致线程被阻塞吗?
如果没有,人们会认为这Task.Delay(2500).Wait()比好Thread.Sleep(2500).这跟我所说的SO问题/答案略有不同.Wait().
i3a*_*non 12
使用Wait上还未完成的任务,直至任务完成确实阻塞线程.
使用Thread.Sleep更清楚,因为您明确地阻止了一个线程,而不是隐式阻塞任务.
使用的唯一方法Task.Delay是允许使用a CancellationToken,如果你愿意,可以取消阻止.
Thread.Sleep(...) 创建一个事件以在X millisec中唤醒你,然后让你的线程进入睡眠......在X毫秒中,事件唤醒你.
Task.Delay(...).Wait() 创建一个事件以在X millisec中启动一个任务,然后让你的线程进入睡眠状态,直到任务完成(等待)...在X毫秒中,事件启动任务,立即结束,然后唤醒你.
基本上,它们都非常相似.唯一的区别是如果你想从另一个Thread早期醒来,你将不会遇到相同的方法.
| 归档时间: |
|
| 查看次数: |
5616 次 |
| 最近记录: |