Работая над некоторым кодом, я наткнулся на следующее:
Подход 1:
private void MyMethod()
{
var t = Task.Run(
async () =>
{
Foo.Fim();
await Task.Delay(5000);
});
t.Wait();
}
Мы намеренно вводим задержку в 5 секунд, чтобы Fim()
мог завершить свою работу. ,Требуется ввести задержку - представьте, что это вызов стороннего API, который предписывает период охлаждения 5 секунд.
Я хотел бы понять, является ли это правильным подходом для ожидания завершения операции. Чем Подход 1 отличается от следующего Подхода 2? Или есть лучший способ сделать это? Все, что нам нужно, это иметь задержку периода охлаждения и избегать блокировки пользовательского интерфейса.
Подход 2:
private void MyMethod()
{
var t = Task.Run(
() =>
{
Foo.Fim();
Task.Delay(5000).Wait(); // some operation which takes 5 seconds.
});
t.Wait();
}