Выполнить один экземпляр рабочего процесса параллельно - PullRequest
2 голосов
/ 13 января 2012

Допустим, у меня есть рабочий процесс, и я хочу выполнить его много раз параллельно:

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 Ответ

2 голосов
/ 15 января 2012

Да, это «законно» - выполнять определение рабочего процесса таким образом. Само определение рабочего процесса является поточно-ориентированным в отношении вызова. Фактически, настоятельно рекомендуется всегда кэшировать определение рабочего процесса для повторного использования в своих приложениях . Это потому, что определение является просто шаблоном для выполнения, само выполнение каждый раз приводит к совершенно новому состоянию.

...