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
- TableLayoutRowStyleCollection.cs
- TableCell.cs
- DirectoryInfo.cs
- XamlStream.cs
- Point4D.cs
- MasterPageBuildProvider.cs
- TransactionChannelFaultConverter.cs
- DirectoryInfo.cs
- ITextView.cs
- ColorTranslator.cs
- ProcessManager.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- EventLogPermissionAttribute.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- WebPartActionVerb.cs
- RichTextBox.cs
- TextTreeTextElementNode.cs
- PrinterSettings.cs
- AutomationPeer.cs
- RepeaterItemCollection.cs
- MouseGestureValueSerializer.cs
- MailWebEventProvider.cs
- AliasGenerator.cs
- WindowsImpersonationContext.cs
- DataGridViewDesigner.cs
- GestureRecognitionResult.cs
- NameScope.cs
- BackoffTimeoutHelper.cs
- CompilationSection.cs
- SHA1Cng.cs
- EntityObject.cs
- CreateDataSourceDialog.cs
- WS2007HttpBindingCollectionElement.cs
- PreservationFileReader.cs
- BoundPropertyEntry.cs
- InteropBitmapSource.cs
- ECDsaCng.cs
- UpdatableWrapper.cs
- WebPartMovingEventArgs.cs
- LayoutEditorPart.cs
- WsiProfilesElement.cs
- AVElementHelper.cs
- SQLBytes.cs
- DecimalStorage.cs
- ZoneButton.cs
- GenericUriParser.cs
- ButtonRenderer.cs
- RenderContext.cs
- MemoryPressure.cs
- LockRecursionException.cs
- mediaeventargs.cs
- UrlMapping.cs
- XPathExpr.cs
- PnrpPermission.cs
- MarkupExtensionReturnTypeAttribute.cs
- DrawingCollection.cs
- WebPartEventArgs.cs
- MappingException.cs
- ValueOfAction.cs
- ListenerUnsafeNativeMethods.cs
- FixedHyperLink.cs
- XmlSchemaAnnotated.cs
- COAUTHIDENTITY.cs
- WebPartConnectionCollection.cs
- SiteMapNodeCollection.cs
- XmlQualifiedName.cs
- _LocalDataStore.cs
- RelationHandler.cs
- RelationshipDetailsCollection.cs
- CustomCategoryAttribute.cs
- DetailsViewInsertedEventArgs.cs
- OleDbConnection.cs
- Relationship.cs
- ResourceReferenceExpressionConverter.cs
- LinqDataSourceStatusEventArgs.cs
- ColorContext.cs
- PageRanges.cs
- SetState.cs
- FollowerQueueCreator.cs
- Win32PrintDialog.cs
- activationcontext.cs
- sqlstateclientmanager.cs
- ListViewUpdateEventArgs.cs
- HostingEnvironment.cs
- CacheModeValueSerializer.cs
- TypeConverterValueSerializer.cs
- ResourceReader.cs
- X500Name.cs
- StylusShape.cs
- RegexTree.cs
- IndicFontClient.cs
- HostingEnvironment.cs
- COAUTHIDENTITY.cs
- HttpApplication.cs
- RegexInterpreter.cs
- DataBoundControlParameterTarget.cs
- RegexRunnerFactory.cs
- WebServiceBindingAttribute.cs
- ThreadAttributes.cs
- SizeAnimation.cs