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
- ToolStripSplitStackLayout.cs
- GridViewCellAutomationPeer.cs
- GeneralTransform.cs
- StateItem.cs
- TextServicesPropertyRanges.cs
- dsa.cs
- DefaultAutoFieldGenerator.cs
- DrawingGroup.cs
- XmlRootAttribute.cs
- Vector3DCollection.cs
- XPathDocumentNavigator.cs
- SpAudioStreamWrapper.cs
- GradientStop.cs
- Header.cs
- PenCursorManager.cs
- SystemException.cs
- WebPartDisplayModeCollection.cs
- WebPartPersonalization.cs
- StringReader.cs
- ModelItem.cs
- RadioButtonRenderer.cs
- InputReportEventArgs.cs
- ReachPageContentCollectionSerializerAsync.cs
- DelegateTypeInfo.cs
- NativeRightsManagementAPIsStructures.cs
- UnsafeCollabNativeMethods.cs
- SelectedDatesCollection.cs
- QueryParameter.cs
- Debugger.cs
- ImageMapEventArgs.cs
- TripleDESCryptoServiceProvider.cs
- SchemaReference.cs
- TypedTableBaseExtensions.cs
- TextParagraphCache.cs
- ReadOnlyCollection.cs
- AspNetSynchronizationContext.cs
- SqlDataSourceQueryEditorForm.cs
- UDPClient.cs
- UserUseLicenseDictionaryLoader.cs
- HtmlTableRowCollection.cs
- OleDbWrapper.cs
- ActivationArguments.cs
- PrintPreviewControl.cs
- InternalPermissions.cs
- PrimitiveSchema.cs
- WindowsAuthenticationEventArgs.cs
- SelectorItemAutomationPeer.cs
- DocumentCollection.cs
- SignatureResourcePool.cs
- EDesignUtil.cs
- SelectedDatesCollection.cs
- SourceChangedEventArgs.cs
- ChineseLunisolarCalendar.cs
- SqlCommandSet.cs
- SqlBulkCopy.cs
- SqlGenericUtil.cs
- LinkedDataMemberFieldEditor.cs
- TrackBar.cs
- Int32Animation.cs
- ModelItem.cs
- __Filters.cs
- TransactionContextValidator.cs
- SchemaImporterExtensionElement.cs
- RuntimeConfig.cs
- OdbcConnection.cs
- Command.cs
- HttpHeaderCollection.cs
- PersonalizablePropertyEntry.cs
- TreeChangeInfo.cs
- TransformerTypeCollection.cs
- TextTrailingCharacterEllipsis.cs
- HttpConfigurationContext.cs
- Connector.cs
- Walker.cs
- ManagementObjectSearcher.cs
- SpeechSynthesizer.cs
- RenderDataDrawingContext.cs
- NTAccount.cs
- InputReportEventArgs.cs
- DesignerDataSourceView.cs
- WhereaboutsReader.cs
- ADMembershipProvider.cs
- DbConnectionPoolGroup.cs
- DoubleAnimationUsingKeyFrames.cs
- WinFormsComponentEditor.cs
- LogLogRecordHeader.cs
- ElementsClipboardData.cs
- RtfControls.cs
- EntityContainer.cs
- EdmRelationshipNavigationPropertyAttribute.cs
- CompositionTarget.cs
- CharAnimationBase.cs
- SmtpReplyReader.cs
- AnnotationStore.cs
- HMACSHA1.cs
- WorkflowItemsPresenter.cs
- MachineKeySection.cs
- FunctionDetailsReader.cs
- ColorEditor.cs
- ADMembershipProvider.cs