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
- DocumentReference.cs
- SqlStatistics.cs
- RtfNavigator.cs
- UpdateRecord.cs
- XmlUrlEditor.cs
- XXXInfos.cs
- ObjectContextServiceProvider.cs
- ResolveMatches11.cs
- MetadataItemCollectionFactory.cs
- CountdownEvent.cs
- HttpRuntimeSection.cs
- TreeView.cs
- StopStoryboard.cs
- SerializationAttributes.cs
- SmtpNegotiateAuthenticationModule.cs
- TextLineResult.cs
- LassoSelectionBehavior.cs
- FixedElement.cs
- ProfileInfo.cs
- DynamicObjectAccessor.cs
- Int16AnimationUsingKeyFrames.cs
- SpanIndex.cs
- DataGridCellsPanel.cs
- EntityDataSourceDataSelectionPanel.cs
- Queue.cs
- mediaeventshelper.cs
- DataGridRowHeader.cs
- TimeIntervalCollection.cs
- XmlName.cs
- TimelineGroup.cs
- ActivityXRefConverter.cs
- PrincipalPermission.cs
- WorkflowClientDeliverMessageWrapper.cs
- SetterBase.cs
- TCEAdapterGenerator.cs
- ToolStripLocationCancelEventArgs.cs
- TypeCollectionDesigner.xaml.cs
- Scripts.cs
- ScriptControlDescriptor.cs
- CompressStream.cs
- PtsContext.cs
- PropertyGroupDescription.cs
- UnsafeCollabNativeMethods.cs
- XmlSchemaGroupRef.cs
- BrowserInteropHelper.cs
- MouseGestureValueSerializer.cs
- HiddenField.cs
- XmlTypeMapping.cs
- EntityTypeBase.cs
- ReadOnlyTernaryTree.cs
- EdmComplexPropertyAttribute.cs
- BuildProviderCollection.cs
- DataSourceHelper.cs
- StylusPointProperties.cs
- _SpnDictionary.cs
- WebPartConnectionsConfigureVerb.cs
- smtpconnection.cs
- ModelPerspective.cs
- StandardCommands.cs
- StatusStrip.cs
- WindowsListView.cs
- UntypedNullExpression.cs
- OdbcRowUpdatingEvent.cs
- figurelengthconverter.cs
- WS2007FederationHttpBinding.cs
- XmlSchemaAny.cs
- Translator.cs
- ParseHttpDate.cs
- TextElementCollection.cs
- XmlQueryStaticData.cs
- SiteMapPath.cs
- GridPattern.cs
- ILGenerator.cs
- ReturnValue.cs
- StorageComplexPropertyMapping.cs
- Button.cs
- CatalogPart.cs
- ObfuscateAssemblyAttribute.cs
- cookiecollection.cs
- ImageCodecInfoPrivate.cs
- UniqueContractNameValidationBehavior.cs
- WeakReferenceEnumerator.cs
- ConsumerConnectionPoint.cs
- OdbcConnectionHandle.cs
- XmlParser.cs
- RefreshEventArgs.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- EncodingNLS.cs
- NameValueCollection.cs
- IIS7UserPrincipal.cs
- ScriptComponentDescriptor.cs
- PeerApplicationLaunchInfo.cs
- Registration.cs
- CompositeDataBoundControl.cs
- ScriptModule.cs
- XmlSchemaAnnotation.cs
- CharacterShapingProperties.cs
- DataTableReader.cs
- CompilerInfo.cs
- CodeComment.cs