并行活动似乎按顺序执行

Red*_*zon 2 workflow-foundation-4

我正在学习WF4并被困在以下地方.请帮忙.谢谢.

1)我在名为Worker的静态类中创建了一个静态方法MyMethod.在这个方法中,我调用Thread.Sleep(3000),然后打印调用"MyMethod".
2)然后我创建了一个活动DoWork(DoWork.xaml),它包含一个InvokeMethod(目标类型是步骤1中的Worker类,MethodName = MyMethod).
3)在main方法中,我调用了两个名为OutputSequence()和OutputParallel()的方法,如下所示

private static void OutputSequence()            
{        
    Sequence s = new Sequence() { Activities = new DoWork(), new DoWork() } };    
    WorkflowInvoker.Invoke(s);    
}

private static void OutputParallel()            
{        
    Parallel p = new Parallel() { Branches = new DoWork(), new DoWork() } };    
    WorkflowInvoker.Invoke(p);    
}    
Run Code Online (Sandbox Code Playgroud)

OutputSequence()是正常的,因为它调用目标方法两次(按顺序),但并行方法似乎也顺序执行.我希望它能并行执行.
我错过了什么

Ric*_*ett 7

并行活动不是您认为的那样 - 它允许您并行等待并不执行并行执行基于CPU的代码.WF4线程模式是工作流中一次只有一个线程处于活动状态.

如果你在并行中放入两个延迟,则这两个等待将并行发生,而不是顺序发生

这个想法是你想要等待一些行动,你不知道它们将发生的顺序.然后,当所有子分支完成时,并行活动就完成了