并行执行单个工作流实例

时间:2012-01-13 19:37:28

标签: c# parallel-processing workflow-foundation-4 parallel-extensions

我们说我有一个工作流程,我想多次并行执行:

System.Threading.Tasks.Parallel.For(
    0, 
    100, 
    i => WorkflowInvoker.Invoke(
        new Workflow1(),  
        new Dictionary<string, object> { { "Num", i } }));

我想知道,以这种方式执行它是否合法:

var w = new Workflow1();
System.Threading.Tasks.Parallel.For(
    0, 
    100, 
    i => WorkflowInvoker.Invoke(
        w, 
        new Dictionary<string, object> { { "Num", i } }));

1 个答案:

答案 0 :(得分:2)

是的,以这种方式执行工作流定义是“合法的”。就调用而言,工作流定义本身是线程安全的。事实上,it is highly recommended you always cache the workflow definition for reuse in your apps。这是因为定义只是执行的模板,执行本身每次都会导致一个全新的状态。