2013-09-14 3 views
-1

Рассмотрим следующее продолжение:Как выбрать различные стратегии Задача Продолжение в TPL

Task.Factory.StartNew(()=> 
{ 
    MethodA(); 
}) 
.ContinueWith((t)=> 
{ 
    MethodB(); 
}) 
.ContinueWith((t)=> 
{ 
    MethodC(); 
}); 

Как я знаю, что исполнение будет выглядеть следующим образом:

  1. MethodA выполняется.
  2. MethodB Выполняется после завершения MethodA.
  3. MethodC выполняет после MethodB завершает работу.

Что делать, если я хотел MethodC продолжить после MethodA завершается. (Вместо того, чтобы ждать MethodB)

Я ищу решение, кроме вручную объявить переменные задачи, а я хочу, чтобы использовать метод последовательности на свободной фабрике.

ответ

2

Вы могли бы начать иные задачи для MethodB и MethodC так, что они выполняются параллельно сразу MethodA завершает:

Task.Factory.StartNew(()=> 
{ 
    MethodA(); 
}) 
.ContinueWith((t)=> 
{ 
    Task.Factory.StartNew(() => { 
     MethodB(); 
    }); 

    Task.Factory.StartNew(() => { 
     MethodC(); 
    }); 
}); 
Смежные вопросы