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
- AutomationPropertyInfo.cs
- Timer.cs
- OutputCache.cs
- PersonalizationEntry.cs
- PrincipalPermission.cs
- QueryStringParameter.cs
- filewebrequest.cs
- MSAAWinEventWrap.cs
- ObjectStateEntryOriginalDbUpdatableDataRecord.cs
- KeyboardDevice.cs
- RemotingSurrogateSelector.cs
- SmiMetaDataProperty.cs
- TextParagraphCache.cs
- ServiceReflector.cs
- UnsafeNativeMethodsTablet.cs
- DataObjectCopyingEventArgs.cs
- AsymmetricKeyExchangeDeformatter.cs
- FixedTextPointer.cs
- HyperLinkStyle.cs
- SequenceRangeCollection.cs
- EventLogPermission.cs
- StringSource.cs
- OleDbDataReader.cs
- StylusPointProperty.cs
- ParallelActivityDesigner.cs
- DependencyObjectValidator.cs
- RemotingAttributes.cs
- XmlEventCache.cs
- TripleDES.cs
- WasNotInstalledException.cs
- String.cs
- DisplayNameAttribute.cs
- Compiler.cs
- DefaultSerializationProviderAttribute.cs
- SqlDataReaderSmi.cs
- SqlStream.cs
- WindowsBrush.cs
- XmlTextReaderImpl.cs
- DesignerObject.cs
- DataTemplate.cs
- UTF32Encoding.cs
- HttpHandlerActionCollection.cs
- TextMarkerSource.cs
- XmlStreamStore.cs
- EdmFunctions.cs
- TextTreeFixupNode.cs
- EntitySqlQueryCacheKey.cs
- XmlStreamNodeWriter.cs
- XamlClipboardData.cs
- WrappedIUnknown.cs
- DataDocumentXPathNavigator.cs
- ObjectItemCollection.cs
- ProxyRpc.cs
- LexicalChunk.cs
- GetIsBrowserClientRequest.cs
- BindStream.cs
- basevalidator.cs
- basevalidator.cs
- DataTableMappingCollection.cs
- InheritablePropertyChangeInfo.cs
- TraceUtils.cs
- VirtualPathProvider.cs
- SQLInt32Storage.cs
- ISO2022Encoding.cs
- ConfigPathUtility.cs
- FormsAuthenticationTicket.cs
- UpdateTracker.cs
- WindowsFont.cs
- ExpressionBuilder.cs
- MimeFormImporter.cs
- MenuCommands.cs
- Debug.cs
- XPathMultyIterator.cs
- VectorAnimationUsingKeyFrames.cs
- ArraySubsetEnumerator.cs
- DataTableExtensions.cs
- TraceInternal.cs
- FixedTextView.cs
- KnownTypeHelper.cs
- ListControl.cs
- DesignerOptions.cs
- CurrentChangedEventManager.cs
- PopupEventArgs.cs
- QueryStringHandler.cs
- X509UI.cs
- COM2IDispatchConverter.cs
- LoginCancelEventArgs.cs
- AnnotationResourceCollection.cs
- PipelineDeploymentState.cs
- StyleBamlTreeBuilder.cs
- InputLangChangeEvent.cs
- CodeAccessPermission.cs
- OutputCacheProfileCollection.cs
- DictionaryTraceRecord.cs
- AlternateView.cs
- XpsResourceDictionary.cs
- AstTree.cs
- Triplet.cs
- Registry.cs
- Utils.cs