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
- ExpressionWriter.cs
- GetPageCompletedEventArgs.cs
- XmlHierarchyData.cs
- NotifyInputEventArgs.cs
- MonitorWrapper.cs
- EntitySet.cs
- UserCancellationException.cs
- CultureTableRecord.cs
- ProfessionalColors.cs
- MultilineStringConverter.cs
- SmiGettersStream.cs
- ListView.cs
- ObjectQueryState.cs
- BinaryConverter.cs
- DefaultWorkflowSchedulerService.cs
- HotCommands.cs
- DocumentPageViewAutomationPeer.cs
- DataGridViewLinkColumn.cs
- OrderedDictionary.cs
- AuthorizationSection.cs
- BasicHttpBindingCollectionElement.cs
- MouseGesture.cs
- StructuredTypeInfo.cs
- SettingsContext.cs
- QuotedStringWriteStateInfo.cs
- AndCondition.cs
- ButtonChrome.cs
- ClientFormsAuthenticationCredentials.cs
- ActivityDesigner.cs
- XmlExtensionFunction.cs
- CanonicalXml.cs
- PageMediaType.cs
- PersonalizableAttribute.cs
- AttributeEmitter.cs
- UnSafeCharBuffer.cs
- FixedElement.cs
- XmlEncodedRawTextWriter.cs
- AffineTransform3D.cs
- SelectedGridItemChangedEvent.cs
- AppSettingsExpressionBuilder.cs
- OpCopier.cs
- HttpListenerException.cs
- XmlNamespaceManager.cs
- CookieProtection.cs
- bidPrivateBase.cs
- ComPlusTraceRecord.cs
- TextFormatterImp.cs
- RC2.cs
- IncrementalHitTester.cs
- ComplusEndpointConfigContainer.cs
- RegexRunnerFactory.cs
- CaseCqlBlock.cs
- Run.cs
- EmptyStringExpandableObjectConverter.cs
- DocumentScope.cs
- TransformerInfoCollection.cs
- OleDbRowUpdatingEvent.cs
- PageBuildProvider.cs
- CompatibleIComparer.cs
- TablePatternIdentifiers.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- TimelineGroup.cs
- ConnectionPoint.cs
- ControlAdapter.cs
- Misc.cs
- SQLInt32.cs
- ToolStripDropDownClosedEventArgs.cs
- PathSegmentCollection.cs
- SSmlParser.cs
- InfoCardSymmetricCrypto.cs
- Boolean.cs
- SchemaNotation.cs
- WebEventCodes.cs
- UserControlParser.cs
- EdmTypeAttribute.cs
- Semaphore.cs
- SubMenuStyleCollection.cs
- ZipIOModeEnforcingStream.cs
- UnmanagedMarshal.cs
- safelink.cs
- ResizeGrip.cs
- ThicknessKeyFrameCollection.cs
- XmlSchemaObject.cs
- InfoCardAsymmetricCrypto.cs
- WsdlServiceChannelBuilder.cs
- IPHostEntry.cs
- EmbeddedMailObjectsCollection.cs
- ChildDocumentBlock.cs
- TypeConvertions.cs
- DynamicValidator.cs
- ArgIterator.cs
- ControlPaint.cs
- CustomAttribute.cs
- ContainerParaClient.cs
- XPathScanner.cs
- Interlocked.cs
- DataGridViewRowHeaderCell.cs
- Pen.cs
- DrawListViewColumnHeaderEventArgs.cs
- MenuAdapter.cs