2013-08-09 8 views
0

В моем кодировании у меня есть 4 задачи. Задача A Задача B Задача С Задача DWP8 ждет и асинхронный выпуск

Задача D должны быть выполнены после отделки Task A, B & С Задача A, Задача B, Задача С являются Независимость и может выполнять одновременно

я теперь использую подход последовательности для выполнения действия, оно принимает очень медленно

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

Я хотел бы знать, если я могу заставить ее работать параллельно и после законченных задач A, B, C, это будет Запустить задачу D

Благодарим за помощь.

+0

идти параллельно с задачей A, B, и C и callthem в одном методе асинхронного и ждать, что перед вызовом метод задачи D –

ответ

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

не буду работать, D по-прежнему будет запущен раньше. –

+0

, то вы не создаете/не запускаете задачи должным образом. Опубликовать некоторый реальный код –

1

Вы можете назначить задачи для выполнения необходимой работы, но не дожидаться, когда они начнут это делать.

Создайте переменную и присвоить ей задаче, которая возвращается:

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

На данный момент, все они начали в фоновом режиме и только после этого мы будем ждать их, чтобы закончить:

await taskA; 
await taskB; 
await taskC; 

И после завершения A, B, C запустите и дождитесь его завершения. D:

await D(); 
0

Как ab используя 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(); 
Смежные вопросы