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
- WindowsRichEditRange.cs
- ExtenderControl.cs
- SharedConnectionWorkflowTransactionService.cs
- StringExpressionSet.cs
- FixedTextContainer.cs
- UserControl.cs
- ControlPropertyNameConverter.cs
- HttpServerUtilityBase.cs
- ContentElement.cs
- UnsafeMethods.cs
- GcSettings.cs
- InstancePersistenceEvent.cs
- ComplexTypeEmitter.cs
- WaitingCursor.cs
- mda.cs
- SiteMapNodeItemEventArgs.cs
- BrowserInteropHelper.cs
- XmlWrappingReader.cs
- StateManagedCollection.cs
- COSERVERINFO.cs
- CircleEase.cs
- DataGridViewHitTestInfo.cs
- EdmItemCollection.cs
- MsmqOutputMessage.cs
- StateValidator.cs
- IBuiltInEvidence.cs
- RecordConverter.cs
- DataGridViewCellLinkedList.cs
- WmlObjectListAdapter.cs
- WSSecurityXXX2005.cs
- Range.cs
- HttpStreamMessageEncoderFactory.cs
- QuotedPairReader.cs
- AttachmentCollection.cs
- OrderPreservingMergeHelper.cs
- Group.cs
- XPathEmptyIterator.cs
- TextControlDesigner.cs
- MULTI_QI.cs
- RuntimeConfigurationRecord.cs
- LeafCellTreeNode.cs
- MaskedTextProvider.cs
- WebPartConnectionsConfigureVerb.cs
- Selector.cs
- DataObjectEventArgs.cs
- SelectedGridItemChangedEvent.cs
- Module.cs
- infer.cs
- DocumentViewerBase.cs
- AutomationPropertyInfo.cs
- LongCountAggregationOperator.cs
- TypedReference.cs
- WebServiceEnumData.cs
- GradientStopCollection.cs
- Keywords.cs
- Assert.cs
- CodeBlockBuilder.cs
- InstanceOwnerQueryResult.cs
- Substitution.cs
- Margins.cs
- HostUtils.cs
- X509Certificate.cs
- XmlSchemaSimpleContentExtension.cs
- PageCatalogPart.cs
- ConnectionPoint.cs
- ControlType.cs
- ObjectListDesigner.cs
- RawStylusActions.cs
- OdbcHandle.cs
- TaskForm.cs
- ReadOnlyDictionary.cs
- DesignSurfaceEvent.cs
- MarkupProperty.cs
- ConnectionStringsSection.cs
- AsyncResult.cs
- BaseParagraph.cs
- DocumentApplication.cs
- LabelDesigner.cs
- TextBoxAutomationPeer.cs
- RenamedEventArgs.cs
- LingerOption.cs
- OleDbErrorCollection.cs
- Paragraph.cs
- MissingSatelliteAssemblyException.cs
- ToolboxItemCollection.cs
- DynamicILGenerator.cs
- IncrementalReadDecoders.cs
- ReflectPropertyDescriptor.cs
- IndentedWriter.cs
- ListViewItem.cs
- BufferedWebEventProvider.cs
- ObjectViewFactory.cs
- CryptographicAttribute.cs
- MethodExpr.cs
- PrinterResolution.cs
- contentDescriptor.cs
- PrintingPermission.cs
- CssStyleCollection.cs
- Utils.cs
- Transform.cs