Подтвердить что ты не робот

Зачем ждать в блоке finally?

Почему await не разрешено await?

public async void Fn()
{
    try
    {
    }
    finally
    {
        await Task.Delay(4000);
    }
}

зная, что можно вручную получить Awaiter

public void Fn()
{
    try
    {
    }
    finally
    {
        var awaiter = Task.Delay(4000).GetAwaiter();
     }
}
4b9b3361

Ответ 1

Взято из: Где я могу использовать "жду" ?

Внутри блока catch или finally. Вы можете использовать "ожидание" внутри попробуйте блок, независимо от того, связан ли он с уловом или, наконец, блоки, но вы не можете использовать его внутри блоков catch или finally. Это приведет к нарушению семантики обработки исключений CLR.

Это, по-видимому, больше не верно в С# 6.0

Взято из: Предварительный просмотр языка С# 6.0

С# 6.0 устраняет этот недостаток и теперь позволяет ждать вызовов в обоих блоках catch и finally (они уже поддерживались в блоках try)