C#如何异步运行我的两个函数

时间:2018-12-22 18:55:23

标签: c#

下面是我编写的示例程序。我正在学习异步/等待的用法。 当我执行代码时,我会先执行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 "";
        }

1 个答案:

答案 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]);