【问题标题】:Workflow 4.0 in a single threaded apartment?单线程单元中的工作流 4.0?
【发布时间】:2009-11-05 13:48:12
【问题描述】:

我现在正在努力研究 WF 4.0,但我很难弄清楚如何在 STA 线程中运行工作流。我有在工作流中构建 XPS 文档的要求,这意味着我需要创建 UI 元素 (FixedPage),这意味着运行工作流的线程必须是 STA。

在 3.0 中,您可以使用 ManualWorkflowSchedulerService 做一些魔术(我没有管理这部分代码,所以这里没有详细信息),以使工作流在 STA 线程中运行。但现在 4.0 大不一样了;甚至 beta 2 也不同于 beta 1...

有人知道如何让 4.0 工作流在 STA 线程中运行吗?


我不能使用 WorkflowInvoker,因为它只适用于不需要持久性的短期工作流,我会这样做。

【问题讨论】:

    标签: multithreading workflow-foundation-4 workflow-foundation sta


    【解决方案1】:

    您是否尝试过使用 WorkflowInvoker?这应该只是在原始线程上执行工作流,而不是在后台线程上安排工作。

    【讨论】:

    • 当您使用 WorkflowApplication 时,您可以设置 SynchronizationContext 并获得对线程的控制。默认情况下,如果 SynchronizationContext 未设置,它将使用 ThreadPool 完成端口。但是,如果您在说 WPF 中将 WorkflowApplication.SynchronizationContext 设置为 SynchronizationContext.Current,您的活动将在 UI 线程而不是 ThreadPool 上执行。 SynchronizationContext.Current 的内容取决于执行环境,或者您可以根据需要创建自己的实现。
    • 我会调查的。我之前检查过,没有看到与创建线程或调度作业有关的任何内容...
    • 是的,它是 SynchronizationContext。
    猜你喜欢
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多