Я научился использовать Task
легко чем async
/await
. Теперь я пытаюсь использовать Task
, чтобы узнать async
/await
.async/wait и Task/Wait in C# то же самое?
static void Main(string[] args)
{
Console.ReadKey(true);
//Magic1();
Magic2();
Console.WriteLine("{0}", DateTime.Now.ToString());
Console.ReadKey(true);
}
static async void Magic1()
{
var taskA = GetDataAsync();
var taskB = GetDataAsync();
var taskC = GetDataAsync();
Console.WriteLine("a: " + await taskA);
Console.WriteLine("b: " + await taskB);
Console.WriteLine("c: " + await taskC);
}
static Task Magic2()
{
return Task.Run(() =>
{
var taskA = GetDataAsync();
var taskB = GetDataAsync();
var taskC = GetDataAsync();
Task.WaitAll(new Task[] { taskA, taskB, taskC });
Console.WriteLine("a: " + taskA.Result);
Console.WriteLine("b: " + taskB.Result);
Console.WriteLine("c: " + taskC.Result);
});
}
static Task<string> GetDataAsync()
{
return Task.Run(() =>
{
var startTime = DateTime.Now;
for (var i = 0; i < 1000000000; i++)
{
}
var endTime = DateTime.Now;
return startTime.ToString() + " to " + endTime.ToString() + " is " + (endTime - startTime).ToString();
});
}
Я создал два метода, которые, как представляется, сделать то же самое, мои вопросы:
1) является Magic1
и Magic2
же под капотом?
2) Если они не совпадают, могу ли я преобразовать Magic1
в метод, который делает то же самое, не используя async
и await
ключевых слов?
Я не совсем уверен, что вы подразумеваете под «можно преобразовать Magic1» в метод, который использует «Задача». Можете ли вы подробно остановиться на этом? –
Извините, я имею в виду без использования async и ожидания ключевых слов, возможно ли это для меня чтобы написать тот же метод, который делает то же самое? – dpp
ah Я вижу, обновил свой ответ –