Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities.DurableInstancing / System / Activities / DurableInstancing / LoadRetryAsyncResult.cs / 1305376 / LoadRetryAsyncResult.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.Activities.DurableInstancing { using System; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.Runtime; using System.Runtime.DurableInstancing; class LoadRetryAsyncResult : AsyncResult { static AsyncCallback onTryCommandCallback = Fx.ThunkCallback(new AsyncCallback(OnTryCommandCallback)); bool commandSuccess; TimeoutHelper commandTimeout; InstanceLockedException lastInstanceLockedException; int retryCount; public LoadRetryAsyncResult(SqlWorkflowInstanceStore store, InstancePersistenceContext context, InstancePersistenceCommand command, TimeSpan timeout, AsyncCallback callback, object state) : base(callback, state) { this.InstanceStore = store; this.InstancePersistenceContext = context; this.InstancePersistenceCommand = command; this.commandTimeout = new TimeoutHelper(timeout); InstanceStore.BeginTryCommandInternal(this.InstancePersistenceContext, this.InstancePersistenceCommand, this.commandTimeout.RemainingTime(), LoadRetryAsyncResult.onTryCommandCallback, this); } public SqlWorkflowInstanceStore InstanceStore { get; private set; } public TimeSpan RetryTimeout { get; private set; } InstancePersistenceCommand InstancePersistenceCommand { get; set; } InstancePersistenceContext InstancePersistenceContext { get; set; } public static bool End(IAsyncResult result) { LoadRetryAsyncResult thisPtr = AsyncResult.End(result); return thisPtr.commandSuccess; } public void AbortRetry() { Fx.Assert(this.lastInstanceLockedException != null, "no last instance lock exception"); this.Complete(false, this.lastInstanceLockedException); } public void Retry() { InstanceStore.BeginTryCommandInternal(this.InstancePersistenceContext, this.InstancePersistenceCommand, this.commandTimeout.RemainingTime(), LoadRetryAsyncResult.onTryCommandCallback, this); } [SuppressMessage(FxCop.Category.Design, FxCop.Rule.DoNotCatchGeneralExceptionTypes, Justification = "Standard AsyncResult callback pattern.")] static void OnTryCommandCallback(IAsyncResult result) { LoadRetryAsyncResult tryCommandAsyncResult = (LoadRetryAsyncResult)(result.AsyncState); Exception completeException = null; bool completeFlag = true; try { tryCommandAsyncResult.CompleteTryCommand(result); } catch (InstanceLockedException instanceLockedException) { TimeSpan retryDelay = tryCommandAsyncResult.InstanceStore.GetNextRetryDelay(++tryCommandAsyncResult.retryCount); if (retryDelay < tryCommandAsyncResult.commandTimeout.RemainingTime()) { tryCommandAsyncResult.RetryTimeout = retryDelay; if (tryCommandAsyncResult.InstanceStore.EnqueueRetry(tryCommandAsyncResult)) { tryCommandAsyncResult.lastInstanceLockedException = instanceLockedException; completeFlag = false; } } else if (TD.LockRetryTimeoutIsEnabled()) { TD.LockRetryTimeout(tryCommandAsyncResult.commandTimeout.OriginalTimeout.ToString()); } if (completeFlag) { completeException = instanceLockedException; } } catch (Exception exception) { if (Fx.IsFatal(exception)) { throw; } completeException = exception; } if (completeFlag) { tryCommandAsyncResult.Complete(false, completeException); } } void CompleteTryCommand(IAsyncResult result) { this.commandSuccess = this.InstanceStore.EndTryCommand(result); } } } // 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
- TrackingProfileCache.cs
- LinqDataSourceSelectEventArgs.cs
- Sequence.cs
- SessionPageStateSection.cs
- HyperlinkAutomationPeer.cs
- XmlChildEnumerator.cs
- VarRefManager.cs
- GridEntry.cs
- XmlNode.cs
- ObjectQueryExecutionPlan.cs
- DataTableReader.cs
- ArrayList.cs
- FastEncoderWindow.cs
- SmiEventStream.cs
- Int32Animation.cs
- UnescapedXmlDiagnosticData.cs
- DataPager.cs
- OleDbCommandBuilder.cs
- TemplateEditingVerb.cs
- BuilderPropertyEntry.cs
- FloatSumAggregationOperator.cs
- SimpleHandlerBuildProvider.cs
- RadioButtonPopupAdapter.cs
- KnownBoxes.cs
- InputProcessorProfilesLoader.cs
- SqlExpander.cs
- WebZone.cs
- TextRange.cs
- AdjustableArrowCap.cs
- SafeHandles.cs
- WindowsSysHeader.cs
- CategoryNameCollection.cs
- CqlGenerator.cs
- WebPartVerbsEventArgs.cs
- PixelShader.cs
- XamlSerializerUtil.cs
- OdbcEnvironmentHandle.cs
- BinaryExpression.cs
- RSATokenProvider.cs
- EntityDataSourceDataSelection.cs
- TemplateEditingFrame.cs
- DetailsViewModeEventArgs.cs
- ParagraphVisual.cs
- RadioButtonList.cs
- CodeNamespace.cs
- DateTimeOffsetStorage.cs
- PrimaryKeyTypeConverter.cs
- Expressions.cs
- Attributes.cs
- EpmContentDeSerializer.cs
- HtmlControlPersistable.cs
- NavigationCommands.cs
- TraceContext.cs
- SerializationFieldInfo.cs
- ScrollProviderWrapper.cs
- HitTestParameters.cs
- PersonalizationEntry.cs
- CodePrimitiveExpression.cs
- FrameworkElement.cs
- Lookup.cs
- NeutralResourcesLanguageAttribute.cs
- OdbcConnection.cs
- BitmapSizeOptions.cs
- RefreshPropertiesAttribute.cs
- ToolboxItemFilterAttribute.cs
- GroupItem.cs
- SpecularMaterial.cs
- EffectiveValueEntry.cs
- DynamicRendererThreadManager.cs
- SpeechRecognizer.cs
- TraceLog.cs
- RootProfilePropertySettingsCollection.cs
- CodeSnippetExpression.cs
- FileClassifier.cs
- DesignerResources.cs
- PropertyCollection.cs
- ToolStripStatusLabel.cs
- EdgeProfileValidation.cs
- ConfigurationCollectionAttribute.cs
- Translator.cs
- Monitor.cs
- TargetControlTypeAttribute.cs
- GeneralTransform3DGroup.cs
- VirtualDirectoryMappingCollection.cs
- ZeroOpNode.cs
- TimerExtension.cs
- HandlerBase.cs
- SiteMapSection.cs
- GeneralTransform3DTo2D.cs
- Roles.cs
- ApplicationDirectory.cs
- ConfigurationLockCollection.cs
- UserPreferenceChangingEventArgs.cs
- HtmlInputImage.cs
- WebServiceClientProxyGenerator.cs
- Blend.cs
- ServicesUtilities.cs
- AjaxFrameworkAssemblyAttribute.cs
- ProgressBarAutomationPeer.cs
- ProviderCollection.cs