Я начал погружаться в aync-программирование, и я хочу выполнить очень простой метод добавления как операцию async.Async полностью на пути к Task.Run по простому методу вычисления
Одна из вещей, которые я прочитал, заключается в том, что действительно асинхронная программа не требует переключения потоков => это означает, что Task.Run(..)
можно избежать.
Это, как я реализовал метод добавления:
public class TaskSimpleExample
{
public static void SimpleCalcExample()
{
// Will perform in background
Task<int> resultTask = Task.Run(() => BeginCalcNumbers(6, 6));
Console.WriteLine("Doing Work");
Console.WriteLine("Doing More Work");
Console.WriteLine("Doing Extra Work");
resultTask.Wait();
Console.WriteLine("Work is done!");
}
static int BeginCalcNumbers(int number1, int number2)
{
int result = Add(number1, number2);
Console.WriteLine(result);
return result;
}
static int Add(int number1, int number2)
{
int result = number1 + number2;
return result;
}
}
К сожалению, я понимаю, что это не имеет ничего общего с async
. Он просто открывает другой поток и работает в фоновом режиме.
Я не смог преобразовать этот код, чтобы использовать async
& await
(и устранить Task.Run
). Является ли это возможным ? (Обратите внимание, что мне нужно продолжить после обратного вызова в другом месте в методе, используя resultTask.Wait()
).
Почему вы хотите использовать асинхра/ожидание при добавлении двух чисел? Это кажется излишним. –
Вы не можете избавиться от 'Task.Run', так как ни одна из ваших инструкций не является асинхронной. Таким образом, «Task.Run» - единственное, что вы можете ожидать в этом примере. – Petaflop
@JoakimSkoog, добавляющий к числу, является просто примером для задачи с привязкой к CPU – ohadinho