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
- AtlasWeb.Designer.cs
- _NtlmClient.cs
- ACE.cs
- AnimationStorage.cs
- BufferedGraphicsContext.cs
- IdnMapping.cs
- DtcInterfaces.cs
- DateTimeConverter2.cs
- CommandDevice.cs
- ConnectionManagementElementCollection.cs
- Propagator.Evaluator.cs
- FrameworkObject.cs
- WebPartDescription.cs
- MappingItemCollection.cs
- ToolZone.cs
- QuaternionAnimationUsingKeyFrames.cs
- SafeNativeMethodsCLR.cs
- MethodRental.cs
- XmlWriterDelegator.cs
- JpegBitmapEncoder.cs
- ProfileSettings.cs
- ScalarConstant.cs
- PathFigureCollectionConverter.cs
- TextEffect.cs
- DeadCharTextComposition.cs
- IdentifierCreationService.cs
- ErrorHandlerModule.cs
- IndexOutOfRangeException.cs
- StackOverflowException.cs
- InvalidProgramException.cs
- Application.cs
- ByValueEqualityComparer.cs
- DbUpdateCommandTree.cs
- SystemIPv4InterfaceProperties.cs
- EntityCommandExecutionException.cs
- EntityObject.cs
- HttpFileCollection.cs
- IisTraceListener.cs
- DataRelationPropertyDescriptor.cs
- LinqDataSourceDisposeEventArgs.cs
- FieldBuilder.cs
- ProvidersHelper.cs
- Function.cs
- Thumb.cs
- XmlSchemaAttribute.cs
- EntityTransaction.cs
- WaitHandle.cs
- WSSecurityXXX2005.cs
- UpdateCommand.cs
- NativeMethods.cs
- CredentialManagerDialog.cs
- CipherData.cs
- WindowsFormsSectionHandler.cs
- MessageHeaders.cs
- CreateUserErrorEventArgs.cs
- RuleSetBrowserDialog.cs
- PropertyEntry.cs
- ModelPerspective.cs
- recordstatefactory.cs
- ObjectDataSourceMethodEventArgs.cs
- SchemaTableColumn.cs
- WindowsMenu.cs
- RangeBaseAutomationPeer.cs
- PersistenceException.cs
- GridViewSortEventArgs.cs
- SqlTrackingQuery.cs
- documentation.cs
- FocusTracker.cs
- FormatStringEditor.cs
- OleDbDataAdapter.cs
- FixedSchema.cs
- HttpDebugHandler.cs
- MaskPropertyEditor.cs
- StringUtil.cs
- SafeNativeMethods.cs
- WorkerRequest.cs
- TableNameAttribute.cs
- Environment.cs
- PaginationProgressEventArgs.cs
- DbUpdateCommandTree.cs
- GeometryHitTestResult.cs
- InternalConfigSettingsFactory.cs
- BinaryWriter.cs
- wgx_sdk_version.cs
- LayoutUtils.cs
- DtdParser.cs
- OpenTypeLayoutCache.cs
- ConfigXmlElement.cs
- CredentialCache.cs
- XmlFormatReaderGenerator.cs
- StreamGeometryContext.cs
- BaseTreeIterator.cs
- AnnotationResource.cs
- DecimalConstantAttribute.cs
- PermissionToken.cs
- ChtmlCalendarAdapter.cs
- NTAccount.cs
- RawStylusInputCustomData.cs
- AdCreatedEventArgs.cs
- ExpressionVisitor.cs