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
- SafeTokenHandle.cs
- dsa.cs
- NeedSkipTokenVisitor.cs
- IndexExpression.cs
- StreamWithDictionary.cs
- DrawingCollection.cs
- XmlSchemaSimpleTypeUnion.cs
- StyleXamlParser.cs
- InteropAutomationProvider.cs
- ProgressiveCrcCalculatingStream.cs
- BindUriHelper.cs
- InteropBitmapSource.cs
- Panel.cs
- PageBreakRecord.cs
- ConnectionManagementElement.cs
- OleDbConnection.cs
- MachineKeySection.cs
- ButtonPopupAdapter.cs
- LineVisual.cs
- UTF8Encoding.cs
- PartitionedStream.cs
- ZipFileInfo.cs
- ellipse.cs
- IconConverter.cs
- BlurBitmapEffect.cs
- GPPOINTF.cs
- ContentTextAutomationPeer.cs
- WebPartsPersonalization.cs
- ObjectDataSourceSelectingEventArgs.cs
- IgnoreSection.cs
- FrameworkPropertyMetadata.cs
- followingsibling.cs
- ParameterExpression.cs
- MemberHolder.cs
- FixedSOMElement.cs
- WebPartsSection.cs
- FlowDocumentPaginator.cs
- TaskFormBase.cs
- XmlSchemaAnnotation.cs
- ContextConfiguration.cs
- MetadataCollection.cs
- Msmq4PoisonHandler.cs
- ImageAutomationPeer.cs
- UnsafeNativeMethods.cs
- PropertyCondition.cs
- WindowsFormsHost.cs
- DataGridViewBand.cs
- DisableDpiAwarenessAttribute.cs
- XmlResolver.cs
- _LocalDataStoreMgr.cs
- ThreadAbortException.cs
- TrackingLocation.cs
- WebPartZone.cs
- FeatureSupport.cs
- XmlChildNodes.cs
- Privilege.cs
- DataGridSortingEventArgs.cs
- Selection.cs
- QuaternionAnimation.cs
- DefaultBindingPropertyAttribute.cs
- FileNotFoundException.cs
- WebPartTransformerAttribute.cs
- OleServicesContext.cs
- Accessors.cs
- NameValueSectionHandler.cs
- HitTestWithPointDrawingContextWalker.cs
- SmtpMail.cs
- DataGridViewRowStateChangedEventArgs.cs
- ReliabilityContractAttribute.cs
- TableLayoutStyle.cs
- DefinitionProperties.cs
- ExtensionDataObject.cs
- OutputCacheProfileCollection.cs
- TraceSwitch.cs
- OletxTransactionManager.cs
- SymmetricKeyWrap.cs
- FlowDocument.cs
- PropertyExpression.cs
- ReachPageContentSerializer.cs
- ValidationErrorEventArgs.cs
- SmiMetaData.cs
- ping.cs
- SQLRoleProvider.cs
- IndentTextWriter.cs
- NumericExpr.cs
- UpdatePanel.cs
- ArrayExtension.cs
- StringValidator.cs
- EmbeddedMailObjectsCollection.cs
- AppDomainProtocolHandler.cs
- AppDomainEvidenceFactory.cs
- HttpClientCertificate.cs
- SystemDropShadowChrome.cs
- DataRelationPropertyDescriptor.cs
- TemplateInstanceAttribute.cs
- BaseValidator.cs
- DrawingContextDrawingContextWalker.cs
- TypedAsyncResult.cs
- GradientStop.cs
- TextDecoration.cs