WorkflowRuntimeService.Start 方法

定義

在衍生類別中覆寫時,啟動服務並將 State 變更為 Starting

protected public:
 virtual void Start();
protected internal virtual void Start ();
abstract member Start : unit -> unit
override this.Start : unit -> unit
Protected Friend Overridable Sub Start ()

例外狀況

Runtime 為 null 參考 (在 Visual Basic 中為 Nothing)

-或-

已經啟動服務。

範例

下列範例將示範呼叫衍生自 WorkflowRuntimeService 之物件上的 Start 方法 (TerminationTrackingService)。 這個範例來自<暫止追蹤服務 SDK>範例。 如需詳細資訊,請參閱 終止追蹤服務範例

protected override void Start()
{
    base.Start();
    //
    // This will throw if we are invalid to inform the host immediately
    ValidateEventLogSource(source);
}
Protected Overrides Sub Start()
    MyBase.Start()
    '
    ' This will throw if we are invalid to inform the host immediately
    ValidateEventLogSource(source)
End Sub

備註

呼叫 Start 時,工作流程執行階段引擎會在每個衍生自 WorkflowRuntimeService 類別的服務上叫用 StartRuntime

工作流程執行階段引擎啟動後,藉由呼叫 Start 將工作流程執行階段引擎服務加入至工作流程執行階段引擎時,也會叫用 AddServiceStart 的預設實作會追蹤服務是否已啟動,並使用這項資訊擲回適當的例外狀況 (如果啟動服務時發現服務已在執行中)。

您可以透過覆寫此方法,提供由工作流程執行階段引擎啟動您的服務所需的額外方法。 但是,當工作流程執行階段引擎呼叫您服務上的 Start 時,並不保證將會執行哪些服務 (如果有的話)。 因此,在 Start 方法中,您應該只執行任何不會依賴由其他服務提供功能的初始化。 這包括由排程器服務等核心服務提供的功能。 工作流程執行階段引擎會在呼叫所有它的工作流程執行階段引擎服務的 WorkflowRuntime.Started 方法後,引發 Start 事件。 如果您的服務在所有的工作流程執行階段引擎服務啟動後還需要其他的初始化,您可以覆寫 OnStarted 方法,以便在 Start 事件引發時,執行這類初始化。

注意

如果您的服務是在工作流程執行階段引擎已啟動後,經由呼叫 AddService 加入至工作流程執行階段引擎,則工作流程階段引擎將呼叫您的服務上的 Start。 但在這種情況中,已經發生 Started 事件,因此您的服務可能必須執行它通常由 OnStarted 方法內部的 Start 中執行的任何初始化。 您可以測試 IsStarted 以判斷工作流程執行階段引擎是否已啟動。

Start 應該只能由工作流程執行階段引擎呼叫。

適用於