2

Я сейчас смотрю на WF 4.0, но мне сложно понять, как запускать потоки в потоках STA. У меня есть требование для создания документов XPS в рабочем процессе, что означает, что мне нужно создать элементы интерфейса (FixedPage), что означает, что поток, выполняющий рабочий процесс, должен быть STA.Workflow 4.0 в однопоточной квартире?

В 3.0 вы можете сделать магию (я не управлял этой частью кода, поэтому никаких подробностей здесь) с ManualWorkflowSchedulerService, чтобы запустить рабочий процесс в потоке STA. Но сейчас 4.0 намного отличается; даже бета 2 отличается от бета 1 ...

Кто-нибудь знает, как получить 4,0 рабочих процесса, работающих в потоках STA?


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

ответ

3

Вы пытались использовать WorkflowInvoker? Это должно просто выполнить рабочий процесс в исходном потоке и не планировать работу с фоновым протектором.

+0

Я только что видел это. Но он также блокирует текущий поток, который не является оптимальным ... – Will

+1

Когда вы используете WorkflowApplication, вы можете установить SynchronizationContext и получить контроль над потоками. По умолчанию, если SynchronizationContext не установлен, он будет использовать порты завершения ThreadPool. Но если вы установите WorkflowApplication.SynchronizationContext в SynchronizationContext.Current, скажем, WPF, ваши действия будут выполняться в потоке пользовательского интерфейса вместо ThreadPool. Содержимое SynchronizationContext.Current зависит от среды исполнения, или вы можете при необходимости создать свою собственную реализацию. – Maurice

+0

Я рассмотрю это. Я проверил его раньше и не видел ничего, связанного с созданием потоков или планированием заданий ... – Will

Смежные вопросы