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
- Win32MouseDevice.cs
- ExtendedPropertyDescriptor.cs
- SoapObjectReader.cs
- DES.cs
- DictionaryGlobals.cs
- TextElementCollection.cs
- PageTheme.cs
- Model3D.cs
- KeyFrames.cs
- SqlCacheDependency.cs
- CapabilitiesUse.cs
- FilteredSchemaElementLookUpTable.cs
- DiagnosticsConfiguration.cs
- DataGridItemCollection.cs
- ProfilePropertySettings.cs
- DataMisalignedException.cs
- GeneralTransform3DTo2D.cs
- InfoCardKeyedHashAlgorithm.cs
- DummyDataSource.cs
- RecognizedAudio.cs
- SqlError.cs
- TimersDescriptionAttribute.cs
- FormatException.cs
- CodeDomConfigurationHandler.cs
- StringFreezingAttribute.cs
- ElementsClipboardData.cs
- UnsafeNativeMethodsTablet.cs
- Utility.cs
- RadioButtonAutomationPeer.cs
- RegexWriter.cs
- __Filters.cs
- ExpressionParser.cs
- COM2ICategorizePropertiesHandler.cs
- COM2IProvidePropertyBuilderHandler.cs
- DrawingContextDrawingContextWalker.cs
- LocationUpdates.cs
- FileStream.cs
- TableAdapterManagerGenerator.cs
- EventWaitHandleSecurity.cs
- ObjectSelectorEditor.cs
- ZipPackagePart.cs
- TableItemProviderWrapper.cs
- HTMLTagNameToTypeMapper.cs
- ColorContext.cs
- TrustLevelCollection.cs
- GradientSpreadMethodValidation.cs
- ButtonField.cs
- ScrollBarAutomationPeer.cs
- Panel.cs
- SocketAddress.cs
- TagPrefixAttribute.cs
- DeflateStreamAsyncResult.cs
- TextTreeFixupNode.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- EmissiveMaterial.cs
- JsonReaderWriterFactory.cs
- PropertyReferenceExtension.cs
- Drawing.cs
- TextViewBase.cs
- SamlAuthorityBinding.cs
- HexParser.cs
- OracleSqlParser.cs
- MimeMapping.cs
- ArrayItemValue.cs
- DataControlButton.cs
- WebBrowser.cs
- DataGridState.cs
- StreamInfo.cs
- SoapReflectionImporter.cs
- TabItemWrapperAutomationPeer.cs
- WebPartConnectionsCancelVerb.cs
- ImageInfo.cs
- TextServicesCompartmentEventSink.cs
- EventTrigger.cs
- ResourceProperty.cs
- _HeaderInfoTable.cs
- FlagsAttribute.cs
- DoubleAnimation.cs
- DataColumnChangeEvent.cs
- Win32MouseDevice.cs
- SerializationInfoEnumerator.cs
- ZipFileInfoCollection.cs
- SpellerError.cs
- IdentifierCollection.cs
- Claim.cs
- ObjectContext.cs
- OrderedDictionaryStateHelper.cs
- WebPartAddingEventArgs.cs
- JsonReader.cs
- IxmlLineInfo.cs
- Helpers.cs
- SafeArrayRankMismatchException.cs
- TableRow.cs
- DrawingState.cs
- DbMetaDataFactory.cs
- HebrewCalendar.cs
- AngleUtil.cs
- GeneralTransform.cs
- WebPartConnectionsCloseVerb.cs
- XamlDesignerSerializationManager.cs