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 为空引用(在 Visual Basic 中为 Nothing

- 或 -

服务已启动。

示例

下面的示例演示如何在从 WorkflowRuntimeService 派生的对象 TerminationTrackingService 上调用 Start 方法。 此示例摘自“终止跟踪服务”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 只应由工作流运行时引擎调用。

适用于