В чем разница между Task.Run и async/await

В чем разница если по сути можно отправить в Task.Run(SomeMethod) метод и не писать

async void AsyncMethod()
{
   
   await Task.Run(SomeMethod);

}

public void SomeMethod(){}

Ответы (1 шт):

Автор решения: Olegator36

Task.Run() запускает код в потоке, то есть это почти то же самое, что создание и запуск потока Thread.Start() с одной разницей, Task.Run() по умолчанию берет поток из пула, а Thread.Start() создает новый поток.

async и await это система ожидания асинхронных задач, и к многопоточному программированию имеет не прямое отношение.

Task.Run() или Thread.Start() стоит использовать при длительной нагрузке на процессор, например в сложных вычислениях (CPU-bound задач), чтобы распределить нагрузку на несколько ядер процессора. async и await следует использовать для обычного запроса на сервер, работы с файлами, базами данных и других операций ввода-вывода (IO-bound задач).

Подробнее можно почитать в документации: Асинхронное программирование.

→ Ссылка