Я хочу приостановить метод синхронизации. Я знаю, что могу использовать:
// SAMPLE 01
Thread.Sleep(30 * 1000)
но он имеет недостаток блокировки текущего потока. Альтернатива
// SAMPLE 02
await Task.Delay(30 * 1000)
будет работать только в асинхронном методе. Но мне нужно это в методе sync . Мы не можем сделать это так
// SAMPLE 03
Task.Delay(30 * 1000).Wait()
потому что это может вызвать тупик (по крайней мере, я так думаю). Мое окончательное решение -
// SAMPLE 04
Task.Run(() => Task.Delay(30 * 1000)).Wait();
Наконец, мой вопрос: действительно ли это решение ( SAMPLE 04 ) лучше, чем SAMPLE 01 (с использованием Thread.Sleep)?
Бонусный вопрос: SAMPLE 03 действительно можно сделать тупик? Что если мы сделаем это:
// SAMPLE 05
Task.Delay(30 * 1000).Wait(30 * 1000)