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
- UrlMapping.cs
- AppDomainEvidenceFactory.cs
- BamlMapTable.cs
- ExpressionBuilder.cs
- DataGridViewTopLeftHeaderCell.cs
- DataGridViewAutoSizeModeEventArgs.cs
- ContentPathSegment.cs
- RtfFormatStack.cs
- MonitoringDescriptionAttribute.cs
- OneOfTypeConst.cs
- VectorAnimationUsingKeyFrames.cs
- GlobalizationAssembly.cs
- StatusBarItemAutomationPeer.cs
- DescendantBaseQuery.cs
- SettingsPropertyValue.cs
- ObjectDataSourceFilteringEventArgs.cs
- SupportsEventValidationAttribute.cs
- Wildcard.cs
- EditingMode.cs
- IImplicitResourceProvider.cs
- DCSafeHandle.cs
- Menu.cs
- OdbcEnvironmentHandle.cs
- DataGridViewCellCollection.cs
- ArgumentOutOfRangeException.cs
- WsatServiceCertificate.cs
- WebPartZoneBaseDesigner.cs
- FaultException.cs
- HtmlInputRadioButton.cs
- ZipPackage.cs
- PageRequestManager.cs
- EntityDataSourceEntityTypeFilterItem.cs
- XmlParser.cs
- BaseUriHelper.cs
- MediaContextNotificationWindow.cs
- activationcontext.cs
- Module.cs
- DispatcherObject.cs
- SQLUtility.cs
- StateItem.cs
- ModelFactory.cs
- ScriptReferenceEventArgs.cs
- KeyboardInputProviderAcquireFocusEventArgs.cs
- EventArgs.cs
- TextSpan.cs
- SocketConnection.cs
- CompositeCollection.cs
- Package.cs
- Color.cs
- ObjectStateEntry.cs
- XMLDiffLoader.cs
- CommonProperties.cs
- DragEventArgs.cs
- _SslState.cs
- TrustLevelCollection.cs
- GeneralTransform.cs
- HWStack.cs
- ClrPerspective.cs
- CodeTypeDeclaration.cs
- Context.cs
- DataGridParentRows.cs
- GiveFeedbackEvent.cs
- AsyncOperationManager.cs
- TableLayoutSettings.cs
- InlineCollection.cs
- DelegatingTypeDescriptionProvider.cs
- SingleSelectRootGridEntry.cs
- DataSpaceManager.cs
- SharedDp.cs
- XappLauncher.cs
- HttpDebugHandler.cs
- Errors.cs
- SecurityTokenProvider.cs
- WebResponse.cs
- GradientSpreadMethodValidation.cs
- ServerType.cs
- TableLayoutPanel.cs
- RelOps.cs
- Root.cs
- AnnotationStore.cs
- ZoneLinkButton.cs
- CancelEventArgs.cs
- WebReferencesBuildProvider.cs
- ChoiceConverter.cs
- SvcMapFileLoader.cs
- TraceContextEventArgs.cs
- Point4DValueSerializer.cs
- DetailsViewAutoFormat.cs
- PropertyGridView.cs
- DefaultClaimSet.cs
- ContextInformation.cs
- EntityStoreSchemaFilterEntry.cs
- CqlParserHelpers.cs
- WebPartConnectionsCancelEventArgs.cs
- TimeoutHelper.cs
- TextRunCache.cs
- ResetableIterator.cs
- LineVisual.cs
- SQLStringStorage.cs
- RightsManagementEncryptedStream.cs