C# 工作流运行时执行

C# 工作流运行时执行,c#,workflow,workflow-foundation-4,workflow-foundation,workflow-activity,C#,Workflow,Workflow Foundation 4,Workflow Foundation,Workflow Activity,我在VisualStudio的WF4中设计了一个工作流。它是如此简单,我只想以这种方式执行它 using (WorkflowRuntime workflowRuntime = new WorkflowRuntime()) { System.Workflow.Runtime.WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(Workflow1));//My workflow instance

我在VisualStudio的WF4中设计了一个工作流。它是如此简单,我只想以这种方式执行它

 using (WorkflowRuntime workflowRuntime = new WorkflowRuntime())
 {
     System.Workflow.Runtime.WorkflowInstance instance =  workflowRuntime.CreateWorkflow(typeof(Workflow1));//My workflow
     instance.Start();     
 }
但是当我执行这个时,我得到了以下错误

The input workflow type must be an Activity.Parameter name: workflowType

在这方面也有类似的讨论。工作流工作流类是工作流基础3的一部分,不适用于WF4类型。它仅用于向后兼容。事实上,在4.5中,WorkflowRuntime被标记为过时

您可能正在尝试将基于System.Activities.Activity的工作流用于WorkflowRuntime,这将引发您描述的ArgumentException错误

要承载/运行WF4工作流,应使用以下类之一:WorkflowInvoker、WorkflowApplication和WorkflowServiceHost。这在中的文档中进行了描述

最简单的方法是使用WorkflowInvoker作为方法运行工作流,例如:

Activity wf = new WriteLine
{
    Text = "Hello World."
};

WorkflowInvoker.Invoke(wf);
尽管这并不能让您对工作流的生命周期有太多的控制

为您提供完全控制,并允许您将工作流作为WCF服务宿主


事实上,您可以使用Windows Server AppFabric托管WF4工作流,而无需创建自己的主机,并让AppFabric管理实例、安全性和恢复。

Workflow1是什么类型?你能发布它的声明吗?它在Activity libery项目中,我正在使用WPF项目来执行这个.NET 3活动项目还是.NET 4活动项目?还要注意,WorkflowRuntime是一个.NET3类,在.NET4.5中已过时。NET提供了承载/运行工作流的其他方法,即WorkflowInvoker、WorkflowApplication和WorkflowServiceHost。检查在.NET4中运行工作流的方法