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
- PropertyDescriptor.cs
- PlanCompilerUtil.cs
- SymbolType.cs
- ZipFileInfoCollection.cs
- SettingsPropertyValue.cs
- SHA256Managed.cs
- CookielessHelper.cs
- ChangePassword.cs
- Content.cs
- DefaultEventAttribute.cs
- ApplicationSecurityInfo.cs
- Array.cs
- AppSettingsExpressionBuilder.cs
- StringFunctions.cs
- SrgsElement.cs
- ButtonColumn.cs
- EnumerableCollectionView.cs
- DesignerView.cs
- IRCollection.cs
- ApplicationServicesHostFactory.cs
- NetMsmqBinding.cs
- CompilerState.cs
- OleDbSchemaGuid.cs
- XmlUtilWriter.cs
- OleDbParameterCollection.cs
- PopupRoot.cs
- BaseTemplateBuildProvider.cs
- XmlWrappingReader.cs
- ResourceExpressionBuilder.cs
- HttpApplication.cs
- cookiecontainer.cs
- DataServiceQueryProvider.cs
- NamespaceTable.cs
- Polyline.cs
- Int16Storage.cs
- SqlBuffer.cs
- CanonicalFontFamilyReference.cs
- FlowDocumentPage.cs
- Listbox.cs
- RegularExpressionValidator.cs
- ChildTable.cs
- Brushes.cs
- AppDomainFactory.cs
- SystemInfo.cs
- RenderingBiasValidation.cs
- ApplicationGesture.cs
- QuotedStringFormatReader.cs
- ServiceObjectContainer.cs
- MapPathBasedVirtualPathProvider.cs
- ErrorHandlerModule.cs
- CodeBlockBuilder.cs
- AddToCollection.cs
- WebPartConnectionsEventArgs.cs
- TreeViewEvent.cs
- ConnectionManagementSection.cs
- SrgsElementFactory.cs
- QilInvokeEarlyBound.cs
- QueryOutputWriter.cs
- SimpleRecyclingCache.cs
- FolderNameEditor.cs
- ContextStaticAttribute.cs
- WebBrowserNavigatedEventHandler.cs
- WebPartConnectionCollection.cs
- SymbolDocumentGenerator.cs
- WebResourceUtil.cs
- TypedTableHandler.cs
- DataGridViewRowCollection.cs
- Route.cs
- TextMarkerSource.cs
- SHA256Managed.cs
- ZipIOExtraFieldPaddingElement.cs
- BatchParser.cs
- Size3D.cs
- SafeThreadHandle.cs
- DeploymentSection.cs
- Rule.cs
- CircleHotSpot.cs
- BaseParser.cs
- Documentation.cs
- DefaultHttpHandler.cs
- ToolStripItemRenderEventArgs.cs
- MetafileHeaderEmf.cs
- IndexedEnumerable.cs
- AttachedAnnotation.cs
- DataGridViewTextBoxEditingControl.cs
- HwndSourceKeyboardInputSite.cs
- Int16Animation.cs
- NullableDoubleAverageAggregationOperator.cs
- GeneralTransformCollection.cs
- TypeNameConverter.cs
- SchemaHelper.cs
- FindCriteria.cs
- SqlConnectionHelper.cs
- PageHandlerFactory.cs
- Marshal.cs
- DynamicDocumentPaginator.cs
- SByteStorage.cs
- WebPartMovingEventArgs.cs
- ServiceInfo.cs
- PrimaryKeyTypeConverter.cs