Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Services / Messaging / System / Messaging / MessageQueueTransaction.cs / 1305376 / MessageQueueTransaction.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Messaging { using System.Threading; using System.Diagnostics; using System.Messaging.Interop; ////// /// public class MessageQueueTransaction : IDisposable { private ITransaction internalTransaction; private MessageQueueTransactionStatus transactionStatus; private bool disposed; ///[To be supplied.] ////// /// public MessageQueueTransaction() { this.transactionStatus = MessageQueueTransactionStatus.Initialized; } internal ITransaction InnerTransaction { get { return this.internalTransaction; } } ////// Creates a new Message Queuing internal transaction context. /// ////// /// public MessageQueueTransactionStatus Status { get { return this.transactionStatus; } } ////// The status of the transaction that this object represents. /// ////// /// public void Abort() { lock (this) { if (this.internalTransaction == null) throw new InvalidOperationException(Res.GetString(Res.TransactionNotStarted)); else { this.AbortInternalTransaction(); } } } ////// Rolls back the pending internal transaction. /// ////// private void AbortInternalTransaction() { int status = this.internalTransaction.Abort(0, 0, 0); if (MessageQueue.IsFatalError(status)) throw new MessageQueueException(status); this.internalTransaction = null; this.transactionStatus = MessageQueueTransactionStatus.Aborted; } /// /// /// public void Begin() { //Won't allow begining a new transaction after the object has been disposed. if (this.disposed) throw new ObjectDisposedException(GetType().Name); lock (this) { if (internalTransaction != null) throw new InvalidOperationException(Res.GetString(Res.TransactionStarted)); else { int status = SafeNativeMethods.MQBeginTransaction(out this.internalTransaction); if (MessageQueue.IsFatalError(status)) { this.internalTransaction = null; throw new MessageQueueException(status); } this.transactionStatus = MessageQueueTransactionStatus.Pending; } } } ////// Begins a new Message Queuing internal transaction context. /// ////// internal ITransaction BeginQueueOperation() { #pragma warning disable 0618 //@ Monitor.Enter(this); #pragma warning restore 0618 return this.internalTransaction; } /// /// /// public void Commit() { lock (this) { if (this.internalTransaction == null) throw new InvalidOperationException(Res.GetString(Res.TransactionNotStarted)); else { int status = this.internalTransaction.Commit(0, 0, 0); if (MessageQueue.IsFatalError(status)) throw new MessageQueueException(status); this.internalTransaction = null; this.transactionStatus = MessageQueueTransactionStatus.Committed; } } } ////// Commits a pending internal transaction. /// ////// /// public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } ////// Disposes this transaction instance, if it is in a /// pending status, the transaction will be aborted. /// ////// /// protected virtual void Dispose(bool disposing) { if (disposing) { lock (this) { if (internalTransaction != null) this.AbortInternalTransaction(); } } this.disposed = true; } ////// ////// ~MessageQueueTransaction() { Dispose(false); } /// /// internal void EndQueueOperation() { Monitor.Exit(this); } } } // 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
- UICuesEvent.cs
- DataTableNameHandler.cs
- HtmlInputImage.cs
- AdornerDecorator.cs
- AssemblyName.cs
- JpegBitmapDecoder.cs
- XomlCompilerError.cs
- WSSecurityPolicy12.cs
- SetterBaseCollection.cs
- DelegatingHeader.cs
- CurrencyWrapper.cs
- CookieParameter.cs
- ObjectSelectorEditor.cs
- LinkedResourceCollection.cs
- SimpleBitVector32.cs
- BamlLocalizationDictionary.cs
- Column.cs
- LineUtil.cs
- ExtractCollection.cs
- ProfileBuildProvider.cs
- DesignBindingPicker.cs
- RpcAsyncResult.cs
- AmbientLight.cs
- ItemMap.cs
- TextElementCollectionHelper.cs
- SessionStateContainer.cs
- AmbientLight.cs
- PackageDigitalSignatureManager.cs
- ActiveDocumentEvent.cs
- SettingsContext.cs
- WebServiceData.cs
- MultiBindingExpression.cs
- EdmMember.cs
- HandlerBase.cs
- PropertyGridView.cs
- SQLSingle.cs
- IdentityNotMappedException.cs
- DoubleAnimationUsingKeyFrames.cs
- XsdValidatingReader.cs
- AuthenticationServiceManager.cs
- COM2IDispatchConverter.cs
- SqlParameterizer.cs
- DataGridTableStyleMappingNameEditor.cs
- MD5.cs
- RectIndependentAnimationStorage.cs
- oledbconnectionstring.cs
- SamlConditions.cs
- SecurityTokenReferenceStyle.cs
- XmlProcessingInstruction.cs
- InputProviderSite.cs
- CodeLabeledStatement.cs
- XPathPatternBuilder.cs
- AdRotatorDesigner.cs
- DetailsViewUpdatedEventArgs.cs
- ScrollEvent.cs
- ButtonBaseAdapter.cs
- CharEntityEncoderFallback.cs
- UnmanagedMemoryStream.cs
- ImpersonateTokenRef.cs
- InternalBufferOverflowException.cs
- securestring.cs
- DataTablePropertyDescriptor.cs
- ScriptRef.cs
- DataServiceExpressionVisitor.cs
- ListenerElementsCollection.cs
- TreeBuilderXamlTranslator.cs
- X509Certificate2Collection.cs
- DataGridViewElement.cs
- PassportAuthenticationModule.cs
- ContextMenuService.cs
- SqlCacheDependencyDatabaseCollection.cs
- SqlProviderServices.cs
- SqlUdtInfo.cs
- Propagator.ExtentPlaceholderCreator.cs
- PopupEventArgs.cs
- ObjectKeyFrameCollection.cs
- RequestCachePolicy.cs
- Assembly.cs
- FormatException.cs
- CommandManager.cs
- ProtocolsConfigurationHandler.cs
- EntityCollection.cs
- Rethrow.cs
- ManualWorkflowSchedulerService.cs
- ACE.cs
- SamlSubject.cs
- ForeignConstraint.cs
- EntityCollectionChangedParams.cs
- DuplexChannel.cs
- TaskbarItemInfo.cs
- PasswordBoxAutomationPeer.cs
- TextEffectResolver.cs
- MILUtilities.cs
- QueryInterceptorAttribute.cs
- CookieHandler.cs
- ButtonStandardAdapter.cs
- RoleService.cs
- GuidelineCollection.cs
- Stacktrace.cs
- ParallelRangeManager.cs