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 /// 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
- WindowsToolbarAsMenu.cs
- CollectionBuilder.cs
- DockPattern.cs
- PEFileReader.cs
- PictureBox.cs
- BevelBitmapEffect.cs
- CompleteWizardStep.cs
- TagPrefixCollection.cs
- IgnoreSectionHandler.cs
- ArraySubsetEnumerator.cs
- CultureInfo.cs
- Membership.cs
- TextBox.cs
- APCustomTypeDescriptor.cs
- ContextMenu.cs
- DragDeltaEventArgs.cs
- MethodCallConverter.cs
- HtmlToClrEventProxy.cs
- BinaryExpression.cs
- AutoResetEvent.cs
- StringUtil.cs
- ObjectTag.cs
- ComponentDispatcherThread.cs
- PersonalizationProviderHelper.cs
- JumpPath.cs
- CopyOnWriteList.cs
- TagMapInfo.cs
- BlurBitmapEffect.cs
- AssemblyName.cs
- StringKeyFrameCollection.cs
- PermissionSetEnumerator.cs
- DecoderFallback.cs
- GlyphElement.cs
- ChannelManager.cs
- PhysicalFontFamily.cs
- EntityDataSourceStatementEditor.cs
- CommandHelpers.cs
- DynamicDocumentPaginator.cs
- DataAdapter.cs
- QueryAccessibilityHelpEvent.cs
- TraceSection.cs
- PathParser.cs
- PoisonMessageException.cs
- ExpandCollapsePattern.cs
- EntityDataSourceView.cs
- SemanticResultKey.cs
- QilParameter.cs
- control.ime.cs
- TheQuery.cs
- StringFunctions.cs
- ScrollContentPresenter.cs
- AesManaged.cs
- streamingZipPartStream.cs
- XPathSelfQuery.cs
- BaseServiceProvider.cs
- OleDbPropertySetGuid.cs
- DropTarget.cs
- TemplateControlParser.cs
- PagedDataSource.cs
- StylusPointProperty.cs
- EditorAttribute.cs
- Matrix.cs
- Guid.cs
- VariableAction.cs
- NativeMethods.cs
- SqlProviderServices.cs
- EncodingDataItem.cs
- CollectionType.cs
- ObjectStateManager.cs
- PagedDataSource.cs
- dtdvalidator.cs
- HttpListenerRequest.cs
- BounceEase.cs
- CodeStatement.cs
- OdbcCommandBuilder.cs
- WsdlInspector.cs
- RegexCaptureCollection.cs
- LookupNode.cs
- BypassElement.cs
- WebPartVerb.cs
- ComponentTray.cs
- XPathNavigatorKeyComparer.cs
- ModelItemCollectionImpl.cs
- XPathArrayIterator.cs
- TextOutput.cs
- TextDecorationUnitValidation.cs
- SQlBooleanStorage.cs
- IndividualDeviceConfig.cs
- BlockUIContainer.cs
- HostProtectionException.cs
- UIElementParaClient.cs
- QueryCacheEntry.cs
- QuaternionValueSerializer.cs
- DetailsViewDesigner.cs
- XmlCodeExporter.cs
- CommandBinding.cs
- _NetRes.cs
- MappingSource.cs
- TextTreeTextBlock.cs
- ToolStripSettings.cs