Многопоточность в Workflow 4.0 - PullRequest
4 голосов
/ 08 ноября 2010

Я хочу, чтобы каждая последовательность внутри действия foreach<T> выполнялась в другом потоке.Возможно ли это с помощью WWF 4.0?Если нет, как я могу достичь многопоточности в WWF 4.0?

Ответы [ 2 ]

6 голосов
/ 08 ноября 2010

Это зависит от того, какую работу вы делаете. По умолчанию планировщик рабочего процесса будет выполнять только одно действие в рабочем процессе в данный момент, и никак не обойти это. Параллельные действия планируют несколько дочерних действий одновременно, но они не выполняются параллельно.

Большое исключение из правила - действия типа AsyncCodeActivity. Планировщик выполнит другое действие, как только они выполнят некоторые асинхронные действия. Теперь это лучше всего работает при работе с IO, такой как доступ к базе данных или сетевой IO, но это не является обязательным требованием.

Таким образом, для достижения истинного параллелизма в ваших рабочих процессах вам необходимо использовать комбинацию одного из параллельных действий с действиями, производными от AsyncCodeActivity.

0 голосов
/ 09 ноября 2010

Чтобы добиться параллельного выполнения foreach, используйте ParallelForEach .

...