Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx35 / System.WorkflowServices / System / ServiceModel / Dispatcher / WorkflowDurableInstance.cs / 1305376 / WorkflowDurableInstance.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Dispatcher { using System.Workflow.Runtime; using System.Runtime.Diagnostics; using System.ServiceModel.Diagnostics; using System.Diagnostics; class WorkflowDurableInstance : DurableInstance { WorkflowOperationAsyncResult currentOperationInvocation; WorkflowInstanceContextProvider instanceContextProvider; bool shouldCreateNew = false; object thisLock = new object(); WorkflowDefinitionContext workflowDefinition; WorkflowInstance workflowInstance = null; public WorkflowDurableInstance(WorkflowInstanceContextProvider instanceContextProvider, Guid instanceId, WorkflowDefinitionContext workflowDefinition, bool createNew) : base(instanceContextProvider, instanceId) { if (workflowDefinition == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("workflowDefinition"); } this.workflowDefinition = workflowDefinition; this.shouldCreateNew = createNew; this.instanceContextProvider = instanceContextProvider; } public WorkflowOperationAsyncResult CurrentOperationInvocation { get { return this.currentOperationInvocation; } set { this.currentOperationInvocation = value; } } public WorkflowInstance GetWorkflowInstance(bool canCreateInstance) { if (this.workflowInstance == null) { lock (thisLock) { if (shouldCreateNew) { if (canCreateInstance) { this.workflowInstance = this.workflowDefinition.CreateWorkflow(this.InstanceId); shouldCreateNew = false; if (DiagnosticUtility.ShouldTraceInformation) { string traceText = SR.GetString(SR.TraceCodeWorkflowDurableInstanceActivated, InstanceId); TraceUtility.TraceEvent(TraceEventType.Information, TraceCode.WorkflowDurableInstanceActivated, traceText, new StringTraceRecord("DurableInstanceDetail", traceText), this, null); } using (new WorkflowDispatchContext(true, true)) { this.workflowInstance.Start(); } } else { //Make sure we clean up this InstanceContext; DurableErrorHandler.CleanUpInstanceContextAtOperationCompletion(); //Inform InstanceLifeTimeManager to clean up record for InstanceId; if (this.instanceContextProvider.InstanceLifeTimeManager != null) { this.instanceContextProvider.InstanceLifeTimeManager.CleanUp(this.InstanceId); } throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new FaultException(new DurableDispatcherAddressingFault())); } } else { this.workflowInstance = this.workflowDefinition.WorkflowRuntime.GetWorkflow(InstanceId); if (DiagnosticUtility.ShouldTraceInformation) { string traceText = SR.GetString(SR.TraceCodeWorkflowDurableInstanceLoaded, InstanceId); TraceUtility.TraceEvent(TraceEventType.Information, TraceCode.WorkflowDurableInstanceLoaded, traceText, new StringTraceRecord("DurableInstanceDetail", traceText), this, null); } } } } return workflowInstance; } } } // 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
- EncryptedKeyIdentifierClause.cs
- Propagator.JoinPropagator.cs
- DataControlFieldHeaderCell.cs
- WsatAdminException.cs
- Connector.xaml.cs
- FlowDocumentReader.cs
- ToolStripSplitButton.cs
- SecurityException.cs
- RTLAwareMessageBox.cs
- ExceptQueryOperator.cs
- ChannelRequirements.cs
- HebrewNumber.cs
- Attributes.cs
- TagPrefixAttribute.cs
- SqlRowUpdatedEvent.cs
- InfoCardSymmetricCrypto.cs
- NullableConverter.cs
- OdbcConnection.cs
- EmbeddedMailObjectsCollection.cs
- DetailsViewPagerRow.cs
- SoapAttributeOverrides.cs
- InternalConfigHost.cs
- BulletDecorator.cs
- ConnectionStringEditor.cs
- XsltLibrary.cs
- BamlLocalizableResourceKey.cs
- XmlAnyElementAttributes.cs
- SafeNativeMethods.cs
- BufferedGraphicsContext.cs
- _PooledStream.cs
- Int32Storage.cs
- SqlMethods.cs
- LinkTarget.cs
- TriggerAction.cs
- CompilerErrorCollection.cs
- AVElementHelper.cs
- VersionPair.cs
- Slider.cs
- ProviderSettings.cs
- SiblingIterators.cs
- WmlControlAdapter.cs
- COM2AboutBoxPropertyDescriptor.cs
- XamlToRtfParser.cs
- ipaddressinformationcollection.cs
- PeerDuplexChannel.cs
- HebrewNumber.cs
- DataGridLength.cs
- DataContractJsonSerializer.cs
- BindToObject.cs
- ZipIOModeEnforcingStream.cs
- SHA384.cs
- SqlConnectionHelper.cs
- BitmapEffectRenderDataResource.cs
- ServiceNameCollection.cs
- DataRowIndexBuffer.cs
- SqlCachedBuffer.cs
- SQLBoolean.cs
- CaseInsensitiveHashCodeProvider.cs
- SkinBuilder.cs
- PolyBezierSegment.cs
- Condition.cs
- ToolboxComponentsCreatingEventArgs.cs
- FileDialogPermission.cs
- CommandConverter.cs
- HeaderedItemsControl.cs
- LinearGradientBrush.cs
- QilGenerator.cs
- WindowsFormsEditorServiceHelper.cs
- StackBuilderSink.cs
- StrokeCollection.cs
- ListViewInsertEventArgs.cs
- SqlDelegatedTransaction.cs
- DBNull.cs
- SystemEvents.cs
- ConnectionManagementElement.cs
- ServiceBuildProvider.cs
- ClaimTypeRequirement.cs
- OdbcTransaction.cs
- SystemFonts.cs
- ControlTemplate.cs
- EditingCommands.cs
- NonSerializedAttribute.cs
- StringKeyFrameCollection.cs
- WorkflowRuntimeServiceElement.cs
- PerformanceCounterPermission.cs
- OracleCommandBuilder.cs
- AssociationSetMetadata.cs
- ToolStripArrowRenderEventArgs.cs
- Paragraph.cs
- UseAttributeSetsAction.cs
- UpDownEvent.cs
- DocumentPage.cs
- ObjectDataSourceView.cs
- SerializationTrace.cs
- DesigntimeLicenseContext.cs
- PageCatalogPart.cs
- LinkConverter.cs
- XmlProcessingInstruction.cs
- RotateTransform.cs
- DesignerLinkAdapter.cs