Я пытался использовать WF в своем приложении ASP.NET (на самом деле это ASP.NET MVC ... но тот факт, что это MVC вместо WebForms не должен иметь никакого значения).
Теперь я могу запустить WF, и он работает нормально и т. Д., Но он запускается АСИНХРОННО, поэтому любые результаты из WF (хорошо или плохо) теряются на жизненном цикле страницы.
Я нашел статью MSDN , в которой говорится, что в приложениях ASP.NET нам нужно
- Переведите
WorkflowRuntime
в состояние приложения
- К экземпляру
WorkflowRuntime
добавлен ManualWorkflowSchedulerService
(что бы это ни было).
- При необходимости используйте этот экземпляр рабочего процесса состояния приложения.
Это отличается от того, как я научился это делать:
- Сделать WorkflowRuntime статическим объектом, который сначала создается при необходимости.
- Используйте этот статический экземпляр WorkflowRuntime в новом рабочем процессе, который вы собираетесь запустить.
Так ... какой путь лучше? Нужно ли вставлять его в приложение? Каковы различия между ними?
Я понимаю, что на самом деле здесь два вопроса ...
- Состояние приложения и статический объект (с использованием блокировки / нуля или двойная проверка нуля )
- DefaultWorkFlowSchedulerService против ManualWorkFlowSchedulerService
ура!
EDIT:
- Ответ на первый вопрос здесь .
- На второй вопрос дан ответ ниже.