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
- TabItem.cs
- ContextMenuStrip.cs
- DynamicQueryStringParameter.cs
- XmlSchemaGroup.cs
- ToolStripItemClickedEventArgs.cs
- EntityClassGenerator.cs
- XmlObjectSerializerReadContext.cs
- DataServiceResponse.cs
- WebPartCloseVerb.cs
- ComPersistableTypeElementCollection.cs
- WindowsGraphics2.cs
- SQLBinary.cs
- NoneExcludedImageIndexConverter.cs
- XmlEntityReference.cs
- Item.cs
- BrowserCapabilitiesFactoryBase.cs
- RequestValidator.cs
- QueryStringParameter.cs
- InputLangChangeEvent.cs
- SettingsAttributes.cs
- UserControl.cs
- Logging.cs
- BooleanFunctions.cs
- GenericAuthenticationEventArgs.cs
- FixedSOMSemanticBox.cs
- SecurityUtils.cs
- DesignTimeValidationFeature.cs
- ProtocolsConfigurationEntry.cs
- BinaryUtilClasses.cs
- Propagator.cs
- TextTreeTextElementNode.cs
- WindowsTab.cs
- ContextMenuStrip.cs
- DataPointer.cs
- DataGrid.cs
- MarkedHighlightComponent.cs
- MessageBox.cs
- GridViewCellAutomationPeer.cs
- BitVec.cs
- DesignerProperties.cs
- ServiceInstallComponent.cs
- OdbcEnvironment.cs
- WebPartUserCapability.cs
- Adorner.cs
- ComponentEvent.cs
- UseLicense.cs
- HealthMonitoringSection.cs
- Profiler.cs
- DataContractAttribute.cs
- DataServiceResponse.cs
- ControlDesigner.cs
- ValidatorCollection.cs
- RSAPKCS1SignatureDeformatter.cs
- UIElementPropertyUndoUnit.cs
- wgx_exports.cs
- EventProviderTraceListener.cs
- PageParser.cs
- SourceSwitch.cs
- TimeSpanFormat.cs
- Encoder.cs
- CompositeCollectionView.cs
- ScaleTransform3D.cs
- SerializerProvider.cs
- WebPartManagerInternals.cs
- PeerNameResolver.cs
- InstancePersistenceEvent.cs
- ReferenceEqualityComparer.cs
- __Filters.cs
- CustomErrorCollection.cs
- TreeViewDesigner.cs
- DESCryptoServiceProvider.cs
- CheckBoxAutomationPeer.cs
- X509Utils.cs
- Currency.cs
- ExecutionEngineException.cs
- ThemeDirectoryCompiler.cs
- ConfigurationElementProperty.cs
- TCPClient.cs
- UnauthorizedWebPart.cs
- MemberProjectionIndex.cs
- HttpCacheParams.cs
- ModelItemExtensions.cs
- AxWrapperGen.cs
- EdmItemCollection.cs
- ByteStreamMessageEncodingElement.cs
- SafeProcessHandle.cs
- AuthenticatingEventArgs.cs
- WebSysDescriptionAttribute.cs
- DocumentViewerConstants.cs
- DocumentsTrace.cs
- CurrentChangingEventArgs.cs
- XmlSchemaAll.cs
- HttpValueCollection.cs
- TimersDescriptionAttribute.cs
- RectangleF.cs
- EncoderBestFitFallback.cs
- EntityDataSourceWrapper.cs
- SqlDuplicator.cs
- OdbcFactory.cs
- ValueTable.cs