標籤:des winform style blog http color io os 使用
一、WorkflowRuntime類
System.Workflow.Runtime.WorkflowRuntime是工作流程的運行引擎。WorkflowRuntime在宿主中以自己獨立的線程運行,它可以裝在多個工作流程執行個體,每個工作流程執行個體在WorkflowRuntime有獨立的線程。同一宿主可以執行個體化多個引擎,並且可以同時運行。
| 名稱 |
說明 |
| AddService |
將指定的服務添加到工作流程運行時引擎(WorkflowRuntime)中。 |
| CreateWorkflow(Type) |
使用指定工作流程建立新的工作流程執行個體,有多個重載。 |
| Dispose |
釋放由 WorkflowRuntime 佔用的資源。 |
| GetAllServices(Type) |
檢索實現或派生自指定的 Type 且添加到工作流程運行時引擎的所有服務。 |
| GetAllServices<T>() |
檢索實現或派生自指定的泛型型別且添加到工作流程運行時引擎的所有服務。 |
| GetLoadedWorkflows |
擷取一個集合,該集合包含當前載入到記憶體的所有工作流程執行個體。 |
| GetService(Type) |
從工作流程運行時引擎中檢索指定的 Type 的服務。 |
| GetService<T>() |
從工作流程運行時引擎中檢索指定泛型型別的服務。 |
| GetWorkflow |
檢索具有指定 Guid 的工作流程執行個體。 |
| RemoveService |
從工作流程運行時引擎中移除指定的服務。 |
| StartRuntime |
啟動工作流程運行時引擎和工作流程運行時引擎服務。 |
| StopRuntime |
停止工作流程運行時引擎和運行時服務。 |
建立一個工作流程如下:
其代碼如下:
public sealed partial class Workflow1 : SequentialWorkflowActivity { public Workflow1() { InitializeComponent(); } private void ExecuteCode1(object sender, EventArgs e) { MessageBox.Show("工作流程已開始運行!"); } private void ExecuteCode2(object sender, EventArgs e) { MessageBox.Show("會不會運行到我?"); } }
建立一個Winform兩個按鈕,代碼如下:
public partial class Form1 : Form { //定義工作流程運行時引擎 WorkflowRuntime workflowRuntime = new WorkflowRuntime(); public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { //啟動工作流程運行時引擎 workflowRuntime.StartRuntime(); //用Type建立指定的工作流程執行個體 WorkflowInstance workflowInstance = workflowRuntime.CreateWorkflow(typeof(WorkflowLibrary1.Workflow1)); //啟動該工作流程執行個體 workflowInstance.Start(); } private void button2_Click(object sender, EventArgs e) { //擷取該隱形上運行著的所有工作流程 ReadOnlyCollection<WorkflowInstance> ListWorkflowInstance = workflowRuntime.GetLoadedWorkflows(); Guid guid = new Guid(); string NameStr = ""; foreach (WorkflowInstance item in ListWorkflowInstance) { NameStr += item.InstanceId + ";"; guid = item.InstanceId; } MessageBox.Show("此引擎上啟動並執行所有工作流程執行個體InstanceId" + NameStr); //用Guid檢索工作流程 WorkflowInstance workflowInstance = workflowRuntime.GetWorkflow(guid); MessageBox.Show("使用Guid檢索出的工作流程的類型為:" + workflowInstance.GetWorkflowDefinition().GetType().Name); //停止工作流程引擎並釋放資源,這樣一來Code2不會執行 workflowRuntime.StopRuntime(); workflowRuntime.Dispose(); } }
WWF類結構