WP8等待和异步问题

时间:2013-08-09 06:54:11

标签: c# asynchronous windows-phone-8 async-await

在我的编码中,我有4个任务。 任务A. 任务B. 任务C. 任务D

任务D需要在任务A,B& C完成后执行 任务A,任务B,任务C是独立的,可以同时执行

我现在正在使用序列方法来执行操作,这需要非常慢

await Task A;
await Task B;
await Task C;
await Task D;

我想知道我是否可以让它同时运行并且在完成任务A,B,C后,它将运行任务D

感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

await Task.WhenAll(new Task[]{Task A, Task B, Task C})
await Task D

答案 1 :(得分:1)

您可以分配任务以执行必要的工作,但不会等待他们开始这样做。

创建一个变量并将其分配给返回的任务:

var taskA = A();
var taskB = B();
var taskC = C();

此时,他们都在后台开始,然后我们等他们完成:

await taskA;
await taskB;
await taskC;

在A,B,C完成后,运行并等待它完成D:

await D();

答案 2 :(得分:0)

如何使用Thread?

List<Thread> tmpThread = new List<Thread>();
tmpThread.Add(new Thread(new ThreadStart(A));
tmpThread.Add(new Thread(new ThreadStart(B));
tmpThread.Add(new Thread(new ThreadStart(C));
tmpThread.Add(new Thread(new ThreadStart(D));

tmpThread[0].Start();
tmpThread[1].Start();
tmpThread[2].Start();
tmpThread[3].Start();