Фоновая работа через Task.Run в C#
Метод Task.Run ставит делегат в очередь пула потоков и возвращает задачу. Пока идёт расчёт, вызывающий поток свободен: работу выполняет другой поток пула.
Так поступают, когда процессор реально считает. Ожидание диска или сети в этот пул лучше не ставить: поток будет простаивать зря, хотя для таких операций есть свои асинхронные методы.
Посчитаем сумму на потоке пула и дождёмся результата:
Task<int> job = Task.Run(() => 2 + 2);
Console.WriteLine(await job); // выведет 4
Посчитайте в фоновом потоке произведение 7 и 6 и выведите результат.