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
/// System.Transactions.CommittableTransaction .
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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ComponentEditorForm.cs
- XPathParser.cs
- DataGridViewCellPaintingEventArgs.cs
- TrackingProfileSerializer.cs
- DoubleLinkListEnumerator.cs
- DocumentGridContextMenu.cs
- CoreSwitches.cs
- AccessedThroughPropertyAttribute.cs
- FormsAuthenticationCredentials.cs
- FixedLineResult.cs
- ConfigXmlReader.cs
- ViewManager.cs
- TriggerActionCollection.cs
- ToolStripCustomTypeDescriptor.cs
- FontConverter.cs
- InputProcessorProfilesLoader.cs
- StylusButtonEventArgs.cs
- PersonalizationProviderCollection.cs
- AppSettingsReader.cs
- MeshGeometry3D.cs
- FamilyTypeface.cs
- HitTestFilterBehavior.cs
- ApplicationServiceManager.cs
- BasePattern.cs
- CapabilitiesAssignment.cs
- AutomationAttributeInfo.cs
- Hex.cs
- DocumentPageTextView.cs
- XmlDataDocument.cs
- UserNamePasswordValidationMode.cs
- VisualStateChangedEventArgs.cs
- EdmValidator.cs
- EntityDataSourceReferenceGroup.cs
- BuildResultCache.cs
- TextBox.cs
- FieldToken.cs
- GeometryDrawing.cs
- WsdlBuildProvider.cs
- AnnotationResourceChangedEventArgs.cs
- FormatVersion.cs
- GlyphTypeface.cs
- DoubleCollectionConverter.cs
- SafeBuffer.cs
- TraceListener.cs
- DataGridItem.cs
- SemanticKeyElement.cs
- StrokeNodeEnumerator.cs
- XmlElementList.cs
- PauseStoryboard.cs
- AuthorizationSection.cs
- XmlDataImplementation.cs
- XmlCustomFormatter.cs
- Menu.cs
- TextRangeSerialization.cs
- NetworkInterface.cs
- MultiDataTrigger.cs
- _NativeSSPI.cs
- Symbol.cs
- FrameworkRichTextComposition.cs
- TabItem.cs
- ScrollEvent.cs
- FixedNode.cs
- SchemaDeclBase.cs
- OleDbPermission.cs
- ContainerActivationHelper.cs
- NumberAction.cs
- TriggerAction.cs
- CollectionBase.cs
- FontNamesConverter.cs
- TextEditorCopyPaste.cs
- PermissionToken.cs
- TagPrefixInfo.cs
- PerfProviderCollection.cs
- TransformPattern.cs
- PopOutPanel.cs
- InlineCollection.cs
- CDSCollectionETWBCLProvider.cs
- autovalidator.cs
- TableRowCollection.cs
- Constants.cs
- SynchronizationLockException.cs
- DataControlFieldCell.cs
- XmlDomTextWriter.cs
- RoutedUICommand.cs
- RegionData.cs
- BinaryFormatterWriter.cs
- Propagator.JoinPropagator.JoinPredicateVisitor.cs
- FrameworkContentElement.cs
- ReadOnlyMetadataCollection.cs
- WeakHashtable.cs
- HTMLTagNameToTypeMapper.cs
- SocketInformation.cs
- ListViewAutomationPeer.cs
- TableHeaderCell.cs
- Expressions.cs
- AuthenticationSection.cs
- ResourceKey.cs
- DataServiceStreamProviderWrapper.cs
- CollectionChange.cs
- HostedTransportConfigurationBase.cs