Code:
/ 4.0 / 4.0 / 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 .// 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
- TargetPerspective.cs
- ScopedKnownTypes.cs
- ImageField.cs
- SystemSounds.cs
- XmlEnumAttribute.cs
- PointAnimationUsingKeyFrames.cs
- DesignerActionHeaderItem.cs
- CompositeTypefaceMetrics.cs
- DynamicEntity.cs
- PermissionToken.cs
- AuthenticationService.cs
- MergablePropertyAttribute.cs
- DataGridColumnHeader.cs
- RIPEMD160Managed.cs
- HashHelper.cs
- OSFeature.cs
- DecoderExceptionFallback.cs
- SqlAliasesReferenced.cs
- XMLUtil.cs
- CommandID.cs
- RegexMatchCollection.cs
- KeyInstance.cs
- ReferencedAssembly.cs
- DataGridViewColumnCollection.cs
- Policy.cs
- SmiMetaData.cs
- ReversePositionQuery.cs
- LayoutExceptionEventArgs.cs
- Button.cs
- RbTree.cs
- MenuItem.cs
- SHA512.cs
- SafePEFileHandle.cs
- SiteMapPath.cs
- HelpProvider.cs
- FilteredDataSetHelper.cs
- StrongName.cs
- CategoryAttribute.cs
- RoleManagerModule.cs
- MSAANativeProvider.cs
- ExpressionBindingsDialog.cs
- NegotiationTokenAuthenticator.cs
- AttributeProviderAttribute.cs
- AssemblySettingAttributes.cs
- ToolStripLocationCancelEventArgs.cs
- WorkflowExecutor.cs
- CodeDOMProvider.cs
- HttpContextWrapper.cs
- ECDiffieHellmanCng.cs
- TransportSecurityHelpers.cs
- ExpressionParser.cs
- TreeNodeCollection.cs
- BufferedStream.cs
- ResourcesGenerator.cs
- SerializerDescriptor.cs
- DataTableTypeConverter.cs
- DecimalAnimationUsingKeyFrames.cs
- SqlXmlStorage.cs
- ComponentRenameEvent.cs
- WindowVisualStateTracker.cs
- DefaultObjectMappingItemCollection.cs
- BamlResourceContent.cs
- SeekStoryboard.cs
- printdlgexmarshaler.cs
- XmlDictionary.cs
- ObjectDataSourceView.cs
- AssemblyCache.cs
- BrushValueSerializer.cs
- ArraySegment.cs
- DateTime.cs
- CallbackException.cs
- PlatformNotSupportedException.cs
- ToolStripButton.cs
- XmlSchemaComplexType.cs
- WmlPageAdapter.cs
- PreviewPageInfo.cs
- BinaryObjectWriter.cs
- UpdateCompiler.cs
- DistributedTransactionPermission.cs
- DetailsViewPagerRow.cs
- ObjectStateFormatter.cs
- TraceData.cs
- FormatterServicesNoSerializableCheck.cs
- AncestorChangedEventArgs.cs
- GridView.cs
- SQLChars.cs
- StrokeIntersection.cs
- DataFormat.cs
- LocalizableResourceBuilder.cs
- AutoResizedEvent.cs
- DiagnosticsConfigurationHandler.cs
- MimeMapping.cs
- Permission.cs
- XmlWrappingReader.cs
- MultiView.cs
- unsafenativemethodsother.cs
- StrokeNode.cs
- DbConnectionClosed.cs
- AnimatedTypeHelpers.cs
- ExternalCalls.cs