WorkflowRuntimeService.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / RunTime / Hosting / WorkflowRuntimeService.cs / 1305376 / WorkflowRuntimeService.cs

                            // Copyright (c) Microsoft Corporation.  All rights reserved. 

using System;
using System.Globalization;
 
using System.Workflow.Runtime;
 
namespace System.Workflow.Runtime.Hosting 
{
    public enum WorkflowRuntimeServiceState 
    {
        Stopped,
        Starting,
        Started, 
        Stopping
    } 
 
    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(); 
        } 
    }
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK