Я стараюсь не создавать избыточные Task
объекты в моем коде, и я пишу Task
возвращающие функции вместо async Task
функций, где это возможно.
Когда необходимо сохранить значение, возвращаемое функцией async
, я вынужден заставить функцию вернуть async Task
и вызвать функцию с помощью await
.
Пример:
async Task SomeWorkAsync()
{
someGlobalVariable = await AnotherWorkAsync();
}
То, что я написал вместо:
Task SomeWorkAsync()
{
var task = AnotherWorkAsync();
someGlobalVariable = task.Result;
return task;
}
Но я боюсь, что он заблокирует вызывающий поток, как это делает синхронный код.
await SomeWorkAsync(); //main thread block
Есть ли другой способ переписать код в примере без переноса всей функции с новым Task
, как это делает ключевое слово async
?