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
- MailMessage.cs
- ComponentFactoryHelpers.cs
- SynchronizedKeyedCollection.cs
- CodeEntryPointMethod.cs
- Button.cs
- _FtpDataStream.cs
- SqlReferenceCollection.cs
- EventLogEntry.cs
- TextTreeText.cs
- _NativeSSPI.cs
- ProcessHost.cs
- ContainsSearchOperator.cs
- BatchParser.cs
- Color.cs
- QuotedStringWriteStateInfo.cs
- CheckBoxList.cs
- InputEventArgs.cs
- DataException.cs
- XmlLanguageConverter.cs
- XMLSyntaxException.cs
- ConvertEvent.cs
- BinaryFormatter.cs
- SqlDeflator.cs
- RequestCacheValidator.cs
- ControlParser.cs
- ImageAutomationPeer.cs
- XmlFileEditor.cs
- EntityTypeEmitter.cs
- JsonGlobals.cs
- RangeContentEnumerator.cs
- RuleConditionDialog.Designer.cs
- RadioButtonStandardAdapter.cs
- ContentPlaceHolder.cs
- AlphaSortedEnumConverter.cs
- XmlReaderSettings.cs
- PropertyPath.cs
- DecoderExceptionFallback.cs
- securitycriticaldataformultiplegetandset.cs
- ServiceReference.cs
- XmlSchema.cs
- PeerNearMe.cs
- HtmlTextArea.cs
- ComAdminInterfaces.cs
- ColumnMapProcessor.cs
- BoolExpression.cs
- FixedSOMLineRanges.cs
- ProtocolsConfigurationHandler.cs
- SqlDataSourceCommandEventArgs.cs
- EmulateRecognizeCompletedEventArgs.cs
- BaseTemplateParser.cs
- XmlSchemaSimpleContentRestriction.cs
- XNodeNavigator.cs
- DataFieldEditor.cs
- XsltArgumentList.cs
- AuthorizationRuleCollection.cs
- SerializableAttribute.cs
- GPPOINTF.cs
- QilName.cs
- RootBuilder.cs
- DataContractJsonSerializerOperationFormatter.cs
- AnyReturnReader.cs
- VScrollBar.cs
- WebHttpBindingCollectionElement.cs
- AsyncPostBackTrigger.cs
- AssociationTypeEmitter.cs
- CodeDomConfigurationHandler.cs
- SqlInternalConnectionTds.cs
- XmlSchemaSimpleTypeRestriction.cs
- AutoResizedEvent.cs
- ControlCachePolicy.cs
- GuidelineCollection.cs
- DocumentViewer.cs
- PathTooLongException.cs
- EqualityArray.cs
- ContextMenu.cs
- Partitioner.cs
- OpenTypeLayoutCache.cs
- DataGridColumnDropSeparator.cs
- XamlFilter.cs
- NetworkInformationPermission.cs
- XmlReader.cs
- PerfProviderCollection.cs
- DrawingState.cs
- Marshal.cs
- PointF.cs
- BuildProviderUtils.cs
- MsmqChannelListenerBase.cs
- followingquery.cs
- ResourceExpressionBuilder.cs
- DateTimeParse.cs
- PageContentCollection.cs
- DNS.cs
- Zone.cs
- RestHandlerFactory.cs
- PnrpPeerResolver.cs
- DataServiceRequestOfT.cs
- SortFieldComparer.cs
- UInt64Storage.cs
- ServiceDiscoveryElement.cs
- ClientUtils.cs