1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
|
// <copyright file="WorkflowRuntimeService.cs" company="Microsoft">Copyright (c) Microsoft Corporation. All rights reserved.</copyright>
using System;
using System.Globalization;
using System.Workflow.Runtime;
namespace System.Workflow.Runtime.Hosting
{
[Obsolete("The System.Workflow.* types are deprecated. Instead, please use the new types from System.Activities.*")]
public enum WorkflowRuntimeServiceState
{
Stopped,
Starting,
Started,
Stopping
}
[Obsolete("The System.Workflow.* types are deprecated. Instead, please use the new types from System.Activities.*")]
abstract public class WorkflowRuntimeService
{
private WorkflowRuntime _runtime;
private WorkflowRuntimeServiceState state = WorkflowRuntimeServiceState.Stopped;
protected WorkflowRuntime Runtime
{
get
{
return _runtime;
}
}
internal void SetRuntime(WorkflowRuntime runtime)
{
if (runtime == null && _runtime != null)
{
_runtime.Started -= this.HandleStarted;
_runtime.Stopped -= this.HandleStopped;
}
_runtime = runtime;
if (runtime != null)
{
_runtime.Started += this.HandleStarted;
_runtime.Stopped += this.HandleStopped;
}
}
protected void RaiseServicesExceptionNotHandledEvent(Exception exception, Guid instanceId)
{
Runtime.RaiseServicesExceptionNotHandledEvent(exception, instanceId);
}
internal void RaiseExceptionNotHandledEvent(Exception exception, Guid instanceId)
{
Runtime.RaiseServicesExceptionNotHandledEvent(exception, instanceId);
}
protected WorkflowRuntimeServiceState State
{
get { return state; }
}
virtual internal protected void Start()
{
if (_runtime == null)
throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, ExecutionStringManager.ServiceNotAddedToRuntime, this.GetType().Name));
if (state.Equals(WorkflowRuntimeServiceState.Started))
throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, ExecutionStringManager.ServiceAlreadyStarted, this.GetType().Name));
state = WorkflowRuntimeServiceState.Starting;
}
virtual internal protected void Stop()
{
if (_runtime == null)
throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, ExecutionStringManager.ServiceNotAddedToRuntime, this.GetType().Name));
if (state.Equals(WorkflowRuntimeServiceState.Stopped))
throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, ExecutionStringManager.ServiceNotStarted, this.GetType().Name));
state = WorkflowRuntimeServiceState.Stopping;
}
virtual protected void OnStarted()
{ }
virtual protected void OnStopped()
{ }
private void HandleStarted(object source, WorkflowRuntimeEventArgs e)
{
state = WorkflowRuntimeServiceState.Started;
this.OnStarted();
}
private void HandleStopped(object source, WorkflowRuntimeEventArgs e)
{
state = WorkflowRuntimeServiceState.Stopped;
this.OnStopped();
}
}
}
|