Синхронный запуск асинхронного кода в .NET [дубликат] ⇐ C#
-
Гость
Синхронный запуск асинхронного кода в .NET [дубликат]
Я знаю, что этого следует избегать любой ценой, но иногда это просто необходимо: нам нужно синхронно запускать асинхронный код. Я хотел бы знать, есть ли какие-либо различия и/или существует ли предпочтительный подход к этим двум частям кода или есть ли какая-либо альтернатива, которая лучше:
Задача задача = ...; //#1 Task.Run(async() => { дождитесь задачи.ProcessAsync(); }).GetAwaiter().GetResult(); Или просто:
//#2 Task.ProcessAsync().GetAwaiter().GetResult(); Вариант №1 использует ключевые слова async/await и весь связанный с ним синтаксический сахар, но не уверен, что это обязательно сделает его лучше.
Я знаю, что этого следует избегать любой ценой, но иногда это просто необходимо: нам нужно синхронно запускать асинхронный код. Я хотел бы знать, есть ли какие-либо различия и/или существует ли предпочтительный подход к этим двум частям кода или есть ли какая-либо альтернатива, которая лучше:
Задача задача = ...; //#1 Task.Run(async() => { дождитесь задачи.ProcessAsync(); }).GetAwaiter().GetResult(); Или просто:
//#2 Task.ProcessAsync().GetAwaiter().GetResult(); Вариант №1 использует ключевые слова async/await и весь связанный с ним синтаксический сахар, но не уверен, что это обязательно сделает его лучше.
Мобильная версия