c# - 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 "";
}
解决方案
你可以这样使用:
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]);
推荐阅读
- javascript - NPM 未满足的依赖项
- postgresql - 触发器有时会因重复键错误而失败
- intellij-idea - 如何从扩展 RunConfigurationBase 的 Intellij 插件中删除启动/配置选项卡
- asp.net - SignalR 连接中断整个站点
- gradle - 为什么当我升级到 Kotlin 1.3.30 时 Kotlin JSR223 Scripting 停止工作
- php - Laravel 找不到它自动生成的数据库表
- python - 更改 matplotlib 散点图的默认边缘颜色
- c# - 如何从子查询中引用父 LINQ 查询
- excel - 试图使 IF(AND) 语句在 excel 中工作
- javascript - YouTube Iframe API - 视频有时不会通过自定义控件播放,而是会刷新视频