Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / RunTime / Hosting / SharedConnectionInfo.cs / 1305376 / SharedConnectionInfo.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- #region Using directives using System; using System.Diagnostics; using System.Transactions; using System.Data.Common; using System.Threading; #endregion namespace System.Workflow.Runtime.Hosting { ////// This class keeps the following associated with a Transaction /// - a connection that participates in the transaction. /// - an optional local transaction (DbTransaction) generated from the single-phase-committed Transaction. /// The connection and the local transaction are passed around to different host components to /// do transacted DB work using the shared connection. /// internal sealed class SharedConnectionInfo : IDisposable { readonly DbConnection connection; readonly DbTransaction localTransaction; private bool disposed; private ManualResetEvent handle; #region Constructor ////// Instantiate an opened connection enlisted to the Transaction /// if promotable is false, the Transaction wraps a local /// transaction inside and can never be promoted /// /// /// /// internal SharedConnectionInfo( DbResourceAllocator dbResourceAllocator, Transaction transaction, bool wantPromotable, ManualResetEvent handle) { Debug.Assert((transaction != null), "Null Transaction!"); if (null == handle) throw new ArgumentNullException("handle"); this.handle = handle; if (wantPromotable) { // Enlist a newly opened connection to this regular Transaction this.connection = dbResourceAllocator.OpenNewConnection(); this.connection.EnlistTransaction(transaction); } else { // Make this transaction no longer promotable by attaching our // IPromotableSinglePhaseNotification implementation (LocalTranscaction) // and track the DbConnection and DbTransaction associated with the LocalTranscaction LocalTransaction localTransaction = new LocalTransaction(dbResourceAllocator,handle); transaction.EnlistPromotableSinglePhase(localTransaction); this.connection = localTransaction.Connection; this.localTransaction = localTransaction.Transaction; } } #endregion Constructor #region Accessors internal DbConnection DBConnection { get { return this.connection; } } internal DbTransaction DBTransaction { get { return this.localTransaction; } } #endregion Accessors #region IDisposable Members public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } private void Dispose(bool disposing) { if (!this.disposed) { // // If we're using a LocalTransaction it will close the connection // in it's IPromotableSinglePhaseNotification methods if ((this.localTransaction == null)&&(null != connection)) this.connection.Dispose(); } this.disposed = true; } #endregion } } // 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
- ReadOnlyHierarchicalDataSource.cs
- odbcmetadatacollectionnames.cs
- RawKeyboardInputReport.cs
- KeyFrames.cs
- DependsOnAttribute.cs
- Helpers.cs
- PerformanceCountersElement.cs
- _HTTPDateParse.cs
- TextParentUndoUnit.cs
- ItemContainerGenerator.cs
- Geometry3D.cs
- DesignerVerbCollection.cs
- FreezableOperations.cs
- NameValueCollection.cs
- CatalogPartChrome.cs
- TemplateManager.cs
- DataGridViewTextBoxColumn.cs
- DependencyPropertyHelper.cs
- KoreanCalendar.cs
- DiffuseMaterial.cs
- DoubleAnimationUsingPath.cs
- NativeMethods.cs
- SqlWorkflowPersistenceService.cs
- TransformCollection.cs
- __Filters.cs
- ContractListAdapter.cs
- MatrixStack.cs
- TableCellCollection.cs
- XmlDataLoader.cs
- DBConnectionString.cs
- ScriptDescriptor.cs
- AssemblyAttributesGoHere.cs
- PropertyValueChangedEvent.cs
- TrustLevelCollection.cs
- CallbackBehaviorAttribute.cs
- BitmapEffectvisualstate.cs
- DoubleAverageAggregationOperator.cs
- ObjectConverter.cs
- XmlObjectSerializerWriteContextComplexJson.cs
- Literal.cs
- Expression.DebuggerProxy.cs
- PrintDialog.cs
- Route.cs
- TypeDelegator.cs
- TaskHelper.cs
- GeneralTransform3DGroup.cs
- InitializingNewItemEventArgs.cs
- MultipleViewProviderWrapper.cs
- GridViewSelectEventArgs.cs
- TypeKeyValue.cs
- ReferenceEqualityComparer.cs
- PropertyIdentifier.cs
- InternalTypeHelper.cs
- SafeNativeMethodsMilCoreApi.cs
- ListViewInsertionMark.cs
- ReadContentAsBinaryHelper.cs
- ConfigurationProviderException.cs
- DropDownButton.cs
- CursorConverter.cs
- BehaviorEditorPart.cs
- JoinElimination.cs
- CheckableControlBaseAdapter.cs
- DataRowCollection.cs
- PerfService.cs
- ComboBoxAutomationPeer.cs
- SaveFileDialogDesigner.cs
- ContentPosition.cs
- FactoryMaker.cs
- ParameterModifier.cs
- DecodeHelper.cs
- StringToken.cs
- RowTypePropertyElement.cs
- DBParameter.cs
- CollectionEditor.cs
- InstanceKey.cs
- XPathScanner.cs
- ResourceAssociationTypeEnd.cs
- iisPickupDirectory.cs
- WbemException.cs
- FrameworkElementAutomationPeer.cs
- FontCollection.cs
- ResourceContainer.cs
- HTMLTagNameToTypeMapper.cs
- XamlPathDataSerializer.cs
- ITextView.cs
- SettingsPropertyNotFoundException.cs
- UshortList2.cs
- SQLInt16Storage.cs
- DocumentSequence.cs
- CodeMemberProperty.cs
- DoubleLinkList.cs
- PathFigure.cs
- ResourceSetExpression.cs
- CodeDomConfigurationHandler.cs
- ListViewInsertedEventArgs.cs
- ConnectionManagementSection.cs
- UriParserTemplates.cs
- CollectionConverter.cs
- RoutingUtilities.cs
- FontSizeConverter.cs