Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / RunTime / Hosting / DefaultWorkflowTransactionService.cs / 1305376 / DefaultWorkflowTransactionService.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- using System; using System.Transactions; using System.Collections.Specialized; using System.Diagnostics; using System.Configuration; namespace System.Workflow.Runtime.Hosting { ///A simple TransactionService that creates /// public class DefaultWorkflowCommitWorkBatchService : WorkflowCommitWorkBatchService { private bool _enableRetries = false; private bool _ignoreCommonEnableRetries = false; public DefaultWorkflowCommitWorkBatchService() { } public DefaultWorkflowCommitWorkBatchService(NameValueCollection parameters) { if (parameters == null) throw new ArgumentNullException("parameters", ExecutionStringManager.MissingParameters); if (parameters.Count > 0) { foreach (string key in parameters.Keys) { if (0 == string.Compare("EnableRetries", key, StringComparison.OrdinalIgnoreCase)) { _enableRetries = bool.Parse(parameters[key]); _ignoreCommonEnableRetries = true; } } } } public bool EnableRetries { get { return _enableRetries; } set { _enableRetries = value; _ignoreCommonEnableRetries = true; } } protected internal override void Start() { WorkflowTrace.Host.TraceEvent(TraceEventType.Information, 0, "DefaultWorkflowCommitWorkBatchService: Starting"); // // If we didn't find a local value for enable retries // check in the common section if ((!_ignoreCommonEnableRetries)&&(null != base.Runtime)) { NameValueConfigurationCollection commonConfigurationParameters = base.Runtime.CommonParameters; if (commonConfigurationParameters != null) { // Then scan for connection string in the common configuration parameters section foreach (string key in commonConfigurationParameters.AllKeys) { if (string.Compare("EnableRetries", key, StringComparison.OrdinalIgnoreCase) == 0) { _enableRetries = bool.Parse(commonConfigurationParameters[key].Value); break; } } } } base.Start(); } protected override void OnStopped() { WorkflowTrace.Host.TraceEvent(TraceEventType.Information, 0, "DefaultWorkflowCommitWorkBatchService: Stopping"); base.OnStopped(); } internal protected override void CommitWorkBatch(CommitWorkBatchCallback commitWorkBatchCallback) { DbRetry dbRetry = new DbRetry(_enableRetries); short retryCounter = 0; while (true) { if (null != Transaction.Current) { // // Can't retry as we don't own the tx // Set the counter to only allow one iteration retryCounter = dbRetry.MaxRetries; } try { base.CommitWorkBatch(commitWorkBatchCallback); break; } catch( Exception e ) { WorkflowTrace.Host.TraceEvent(TraceEventType.Error, 0, "DefaultWorkflowCommitWorkBatchService caught exception from commitWorkBatchCallback: " + e.ToString()); if (dbRetry.TryDoRetry(ref retryCounter)) { WorkflowTrace.Host.TraceEvent(TraceEventType.Information, 0, "DefaultWorkflowCommitWorkBatchService retrying commitWorkBatchCallback (retry attempt " + retryCounter.ToString(System.Globalization.CultureInfo.InvariantCulture) + ")"); continue; } else throw; } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.System.Transactions.CommittableTransaction .
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- HMACSHA384.cs
- StringComparer.cs
- DomainUpDown.cs
- DataServiceProcessingPipelineEventArgs.cs
- ComPlusDiagnosticTraceSchemas.cs
- SimpleMailWebEventProvider.cs
- ScaleTransform3D.cs
- TemplateControlParser.cs
- DbProviderSpecificTypePropertyAttribute.cs
- FormsAuthenticationModule.cs
- ExpressionParser.cs
- XamlPointCollectionSerializer.cs
- PublisherMembershipCondition.cs
- MenuItemStyleCollection.cs
- LogExtent.cs
- CellIdBoolean.cs
- BuilderPropertyEntry.cs
- TagMapCollection.cs
- WebBrowser.cs
- ClientBuildManager.cs
- AttributeAction.cs
- OpCellTreeNode.cs
- AssemblySettingAttributes.cs
- SimpleWorkerRequest.cs
- XsdCachingReader.cs
- HierarchicalDataBoundControlAdapter.cs
- SolidColorBrush.cs
- XmlReader.cs
- XPathMultyIterator.cs
- SplineQuaternionKeyFrame.cs
- ReadOnlyHierarchicalDataSource.cs
- TextTreeUndo.cs
- TemplateFactory.cs
- CustomError.cs
- SequentialOutput.cs
- ItemCheckEvent.cs
- DataGridrowEditEndingEventArgs.cs
- BadImageFormatException.cs
- TextEditorDragDrop.cs
- AutomationEvent.cs
- Vector3dCollection.cs
- AvTrace.cs
- TemplateControl.cs
- SqlDataSourceStatusEventArgs.cs
- XmlDataImplementation.cs
- ListViewTableCell.cs
- DataBoundControlHelper.cs
- CustomCategoryAttribute.cs
- EntityDescriptor.cs
- ConfigXmlDocument.cs
- NominalTypeEliminator.cs
- DependencyObjectProvider.cs
- SemaphoreFullException.cs
- BamlLocalizer.cs
- DictionaryItemsCollection.cs
- COM2ExtendedBrowsingHandler.cs
- MediaElement.cs
- ToolStripTextBox.cs
- DataGridViewSelectedCellsAccessibleObject.cs
- CrossContextChannel.cs
- DataObjectPastingEventArgs.cs
- AssemblyBuilder.cs
- DefaultExpression.cs
- Suspend.cs
- AdRotator.cs
- BitmapEffectRenderDataResource.cs
- LongPath.cs
- PartialCachingControl.cs
- BodyWriter.cs
- IndentedTextWriter.cs
- ParameterModifier.cs
- IBuiltInEvidence.cs
- BinHexEncoder.cs
- AuthenticatingEventArgs.cs
- ConfigurationElementCollection.cs
- HttpContext.cs
- ProjectionPathSegment.cs
- TemplateXamlParser.cs
- wmiprovider.cs
- StandardMenuStripVerb.cs
- MessageQueue.cs
- PopOutPanel.cs
- ConfigXmlSignificantWhitespace.cs
- ClientWindowsAuthenticationMembershipProvider.cs
- CommaDelimitedStringAttributeCollectionConverter.cs
- GatewayIPAddressInformationCollection.cs
- OleDbError.cs
- RIPEMD160Managed.cs
- UserControlBuildProvider.cs
- CSharpCodeProvider.cs
- userdatakeys.cs
- OracleRowUpdatingEventArgs.cs
- PanelDesigner.cs
- TemplateControlBuildProvider.cs
- XmlComment.cs
- MenuItem.cs
- QueueProcessor.cs
- ScopelessEnumAttribute.cs
- MoveSizeWinEventHandler.cs
- DocumentViewerHelper.cs