下面是我编写的示例程序。我正在学习异步/等待的用法。
当我执行代码时,我会先执行GetAllTheCats
,完成后再执行GetAllTheFood
。所以这不是平行的。告诉我如何才能异步地同时运行两个例程,这将更新两个不同的标签控件。如果可能的话,请重组我的代码。
private async void button1_Click(object sender, EventArgs e)
{
await Task.Run(() => GetAllTheCats());
await Task.Run(() => GetAllTheFood());
}
public string GetAllTheCats()
{
// Do stuff, like hit the Db, spin around, dance, jump, etc...
// It all takes some time.
Thread.Sleep(2000);
return "";
}
public string GetAllTheFood()
{
// Do more stuff, like hit the Db, nom nom noms...
// It all takes some time.
Thread.Sleep(2000);
return "";
}
答案 0 :(得分:3)
您可以这样使用:
var task1 = Task.Run(() => GetAllTheCats());
var task2 = Task.Run(() => GetAllTheFood());
await Task.WhenAll(task1, task2);
然后
Console.WriteLine(task1.Result);
或
var result = await Task.WhenAll(task1, task2);
Console.WriteLine(result[0]);