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
- securitycriticaldataClass.cs
- Trigger.cs
- MimeBasePart.cs
- TextParagraph.cs
- RemoteWebConfigurationHost.cs
- PropertyDescriptorCollection.cs
- XhtmlBasicPanelAdapter.cs
- TextDecorationCollection.cs
- QuaternionRotation3D.cs
- ByteStack.cs
- StringAnimationUsingKeyFrames.cs
- Point3DCollection.cs
- PersonalizationProviderCollection.cs
- FileAuthorizationModule.cs
- BindingWorker.cs
- Drawing.cs
- TextAdaptor.cs
- TextLine.cs
- BitmapEffectInput.cs
- DbConnectionPoolCounters.cs
- ToolStripItem.cs
- FontFaceLayoutInfo.cs
- ObjectQuery_EntitySqlExtensions.cs
- GridViewCancelEditEventArgs.cs
- AxisAngleRotation3D.cs
- ListView.cs
- KeyBinding.cs
- ActiveDesignSurfaceEvent.cs
- ObjectDataSourceEventArgs.cs
- XmlArrayAttribute.cs
- VirtualizedItemProviderWrapper.cs
- DbDataReader.cs
- PerformanceCounterPermissionAttribute.cs
- TemplatePartAttribute.cs
- DesignBindingPropertyDescriptor.cs
- FloaterParaClient.cs
- ButtonBase.cs
- TextFragmentEngine.cs
- ConditionCollection.cs
- PersonalizationProviderCollection.cs
- ExpressionNode.cs
- returneventsaver.cs
- ZipIOFileItemStream.cs
- TemplateKey.cs
- KerberosSecurityTokenAuthenticator.cs
- Util.cs
- ResourceKey.cs
- Mappings.cs
- AnimationLayer.cs
- GridViewUpdatedEventArgs.cs
- CommonEndpointBehaviorElement.cs
- PackageDocument.cs
- ContractCodeDomInfo.cs
- ScrollViewerAutomationPeer.cs
- Stackframe.cs
- SubMenuStyleCollection.cs
- ReachFixedPageSerializerAsync.cs
- AutoCompleteStringCollection.cs
- MetadataItem_Static.cs
- HtmlElement.cs
- CharacterMetrics.cs
- CapabilitiesAssignment.cs
- ApplicationContext.cs
- VirtualizedItemPattern.cs
- ScrollPattern.cs
- FunctionDetailsReader.cs
- BatchParser.cs
- CompositeScriptReferenceEventArgs.cs
- LocationSectionRecord.cs
- InstanceDataCollection.cs
- AuthorizationSection.cs
- Bits.cs
- Logging.cs
- UnwrappedTypesXmlSerializerManager.cs
- UpdatePanelControlTrigger.cs
- CategoryGridEntry.cs
- FileCodeGroup.cs
- ClickablePoint.cs
- SQlBooleanStorage.cs
- InternalResources.cs
- graph.cs
- CompiledRegexRunnerFactory.cs
- SettingsBase.cs
- PropertyGridCommands.cs
- WebProxyScriptElement.cs
- Int32.cs
- EncoderReplacementFallback.cs
- Bitmap.cs
- MetadataItemSerializer.cs
- Relationship.cs
- DuplicateWaitObjectException.cs
- AppDomainEvidenceFactory.cs
- WebResourceAttribute.cs
- DBNull.cs
- XmlUtil.cs
- CodeAccessPermission.cs
- DataListItemEventArgs.cs
- EventProviderTraceListener.cs
- SecurityTokenException.cs
- ProfileParameter.cs