WorkflowRuntimeService.Start 메서드

정의

파생 클래스에서 재정의되는 경우 서비스를 시작하고 StateStarting으로 변경합니다.

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, TerminationTrackingService에서 파생된 개체에 대해 Start 메서드를 호출하는 방법을 보여 줍니다. 이 예제는 Termination Tracking Service 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

설명

StartWorkflowRuntimeService이 호출될 때 StartRuntime 클래스에서 파생된 모든 서비스에서 워크플로 런타임 엔진에 의해 호출됩니다.

Start는 워크플로 런타임 엔진이 시작된 후 AddService를 호출하여 워크플로 런타임 엔진 서비스를 워크플로 런타임 엔진에 추가할 때에도 워크플로 런타임 엔진에 의해 호출됩니다. Start의 기본 구현은 서비스가 시작되었는지 여부를 추적하며, 서비스가 이미 실행되는 동안 시작되는 경우 이 정보를 사용하여 해당 예외를 throw합니다.

이 메서드를 재정의하여 워크플로 런타임 엔진에서 서비스를 시작하도록 하는 데 필요한 추가 기능을 제공할 수 있습니다. 워크플로 런타임 엔진이 서비스에서 Start를 호출할 때 실행되는 서비스(있는 경우)에 대한 보장은 없습니다. 따라서 Start 메서드에서는 다른 서비스가 제공하는 기능에 의존하지 않는 초기화만 수행해야 합니다. 여기에는 스케줄러 서비스 같은 핵심 서비스가 제공하는 기능이 포함됩니다. 워크플로 런타임 엔진은 모든 워크플로 런타임 엔진 서비스의 WorkflowRuntime.Started 메서드를 호출한 후 Start 이벤트를 발생시킵니다. 모든 워크플로 런타임 엔진 서비스가 시작된 후 서비스에 추가 초기화가 필요한 경우 OnStarted 이벤트가 발생할 때 이 초기화를 수행하기 위해 Start 메서드를 재정의할 수 있습니다.

참고

워크플로 런타임 엔진이 시작된 후 AddService를 호출하여 서비스를 워크플로 런타임 엔진에 추가하면 워크플로 런타임 엔진이 서비스에서 Start를 호출합니다. 그러나 이 경우 Started 이벤트가 이미 발생했으므로 주로 OnStarted에서 수행하는 초기화를 Start 메서드 내부에서 수행해야 할 수도 있습니다. IsStarted를 테스트하여 워크플로 런타임 엔진이 시작되었는지 여부를 확인할 수 있습니다.

Start는 워크플로 런타임 엔진에서만 호출되어야 합니다.

적용 대상