В чем истинная разница между Thread.Sleep() и await Task.Delay?

Оба метода заставляют текущую функцию спать, а затем продолжают выполняться, но в чем реальная разница между ними? await потребует, чтобы метод был асинхронным, почему бы просто не использовать Thread.Sleep?

Когда не следует использовать Thread.Sleep, но Task.Delay?


person Troskyvs    schedule 04.03.2020    source источник


Ответы (1)


Thread.Sleep приведет к приостановке потока ОС до истечения таймера.

await Task.Delay зарегистрирует метод обратного вызова, который ОС будет выполнять по истечении таймера. Тогда метод вернет неполный Task. Разрешение вызывающей стороне немедленно выполнить что-то еще в этом потоке ОС.

person Jeremy Lakeman    schedule 04.03.2020