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

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ConfigurationValue.cs
- EarlyBoundInfo.cs
- GregorianCalendar.cs
- SiteMapProvider.cs
- NameValueSectionHandler.cs
- ImageFormat.cs
- NetworkInterface.cs
- InfoCardRSAPKCS1SignatureFormatter.cs
- ApplicationDirectoryMembershipCondition.cs
- RotationValidation.cs
- DrawingAttributesDefaultValueFactory.cs
- ProbeDuplexAsyncResult.cs
- TreeIterators.cs
- XmlNotation.cs
- DocumentXmlWriter.cs
- HMACSHA512.cs
- MatrixTransform.cs
- Exceptions.cs
- MulticastOption.cs
- Domain.cs
- MetadataWorkspace.cs
- HandlerFactoryCache.cs
- SimpleBitVector32.cs
- XmlILIndex.cs
- PointCollection.cs
- Tuple.cs
- UrlMappingsSection.cs
- TypeUtil.cs
- CompilationSection.cs
- ChannelReliableSession.cs
- TextTreeObjectNode.cs
- CursorEditor.cs
- KeyEvent.cs
- DecoderNLS.cs
- HttpWriter.cs
- NetworkInformationException.cs
- MILUtilities.cs
- WindowsContainer.cs
- GPStream.cs
- NavigationPropertyAccessor.cs
- CalendarSelectionChangedEventArgs.cs
- CodeCommentStatement.cs
- BindingExpressionUncommonField.cs
- TraceInternal.cs
- EditorZone.cs
- WebEvents.cs
- ResourceReader.cs
- MemberAccessException.cs
- RIPEMD160Managed.cs
- OracleBFile.cs
- SystemTcpStatistics.cs
- DetailsViewModeEventArgs.cs
- IPEndPoint.cs
- TerminateSequenceResponse.cs
- UTF7Encoding.cs
- ClientEventManager.cs
- CustomError.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- ExpressionCopier.cs
- SqlUtils.cs
- CodeNamespaceImport.cs
- ClientConfigPaths.cs
- ValueSerializerAttribute.cs
- AuthenticatingEventArgs.cs
- XmlHelper.cs
- ProgressChangedEventArgs.cs
- SqlParameterCollection.cs
- DataSourceXmlElementAttribute.cs
- SessionParameter.cs
- Attribute.cs
- SkipQueryOptionExpression.cs
- MultipleViewPattern.cs
- EncryptedPackage.cs
- XmlSchemaParticle.cs
- BitmapEffectDrawing.cs
- GlobalizationAssembly.cs
- GeometryModel3D.cs
- Highlights.cs
- ExpressionBuilderContext.cs
- Polygon.cs
- TextEndOfLine.cs
- ObjectStateEntryDbDataRecord.cs
- DynamicDataRouteHandler.cs
- LinkArea.cs
- WindowsRegion.cs
- XmlWriterDelegator.cs
- HtmlTableCellCollection.cs
- BypassElement.cs
- TimelineCollection.cs
- PerformanceCounterNameAttribute.cs
- FileDetails.cs
- ListBindingHelper.cs
- SystemIcmpV4Statistics.cs
- BypassElementCollection.cs
- StreamFormatter.cs
- SystemIPInterfaceStatistics.cs
- SR.cs
- OneToOneMappingSerializer.cs
- CodeMemberProperty.cs
- UDPClient.cs