【发布时间】:2016-06-20 22:01:19
【问题描述】:
我想使用异步任务同时执行多个循环(我不想使用Parallel.ForEach)
我愿意:
static async void Run()
{
await MultiTasks();
}
static async Task MultiTasks()
{
var Loop1 = Loop1Async();
var Loop2 = Loop2Async();
await Loop1;
await Loop2;
}
static async Task Loop1Async()
{
for (int i = 0; i < 500; i++)
{
Console.WriteLine("Loop 1 : " + i);
}
}
static async Task Loop2Async()
{
for (int i = 0; i < 500; i++)
{
Console.WriteLine("Loop 2 : " + i);
}
}
Run() 在我的 Main 方法中被调用。
但是这两个循环不是同时执行的。第一圈完成后,第二圈开始
为什么以及如何做到这一点?
【问题讨论】:
-
如果
Loop1Async和Loop2Async实际上是异步的,那么代码会产生您期望的结果...但是由于两者都是同步代码,因此可以正常运行。 -
@DStanley 你可能指的是其他方法,而不是
Thread.Sleep...不是每个人都知道Task.Delay是“睡眠”...
标签: c# task multitasking