Что такое замена MaxSimweenousWorkflows? - PullRequest
2 голосов
/ 07 сентября 2011

ОСНОВНОЙ ВОПРОС:

Я использую Workflow Foundation 4.0, в котором WorkflowRuntime был заменен WorkflowApplication в качестве хоста рабочего процесса для одного экземпляра.

Я хочу контролировать количество одновременно работающих экземпляров Workflow. В WF 3.5 и ранее можно было установить свойство MaxSimultaneousWorkflows для DefaultWorkflowSchedulerService, используемого WorkflowRuntime, и такое регулирование может быть достигнуто. Как я могу сделать то же самое с помощью WF 4.0?

ФОН И ПОЧЕМУ Я ХОЧУ СДЕЛАТЬ ЭТО

В моем приложении я хочу одновременно запланировать сотни экземпляров рабочего процесса, и я создаю новый экземпляр WorkflowApplication для каждого из них и вызываю «run» для WorkflowApplication в цикле.

Каждое приложение WorkflowApplication имеет собственный экземпляр DbContext, который он использует для сохранения и чтения данных из SqlServer.

Все прекрасно работает, когда количество одновременно работающих потоков WorkflowApplication достаточно мало (скажем, пара десятков экземпляров). Однако, когда я тестирую приложение с сотнями запланированных экземпляров рабочего процесса, я вижу, что SqlConnection, используемый DbContext, истекает в ожидании потока из ThreadPool.

Следовательно, я хочу ограничить максимальное количество экземпляров WorkflowApplication, которое может работать примерно до 50% от того, что .Net решает по умолчанию, чтобы в .NET ThreadPool оставалось разумное количество потоков для SqlConnection и Asp.Net (который также работает на компьютере в отдельном домене приложений).

...