Существует ли какая-либо концептуальная разница между следующими двумя частями кода:
async Task TestAsync()
{
await Task.Run(() => DoSomeWork());
}
и
Task TestAsync()
{
return Task.Run(() => DoSomeWork());
}
Различается ли сгенерированный код:?
EDIT: Чтобы избежать путаницы с Task.Run
, аналогичный случай:
async Task TestAsync()
{
await Task.Delay(1000);
}
и
Task TestAsync()
{
return Task.Delay(1000);
}
ПОСЛЕДНИЕ ОБНОВЛЕНИЯ: В дополнение к принятому ответу также существует разница в том, как обрабатывается LocalCallContext
: CallContext.LogicalGetData восстанавливается даже там, где нет асинхронности. Почему?