В ожидании неасинхронного метода

Я полностью смущен целым ожидающим/асинхронным шаблоном в С#.

У меня есть приложение форм, и я хочу вызвать метод, который занимает 20 секунд, чтобы выполнить тонну обработки. Поэтому я хочу await его. Я думал, что правильным способом было обозначить его как async Task, но при этом возникает предупреждение, потому что я не использую await где-нибудь в нем.

Google обнаружил что-то о возврате TaskCompletionSource<T>, но у меня нет типа возврата, поскольку он недействителен.

Как я могу вызвать этот метод с помощью await?

Ответ 1

Вызовите свой метод следующим образом:

await Task.Run(() => YourMethod());

Когда вы используете метод Task.Run, он создает для вас ожидаемую задачу.