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
- SettingsPropertyValueCollection.cs
- MailBnfHelper.cs
- WindowsUpDown.cs
- EnterpriseServicesHelper.cs
- TextTreeText.cs
- EventSinkHelperWriter.cs
- BulletChrome.cs
- ConfigurationElement.cs
- DelegateSerializationHolder.cs
- dbenumerator.cs
- ConsumerConnectionPointCollection.cs
- CodeSnippetTypeMember.cs
- WinEventQueueItem.cs
- AdRotator.cs
- ValueUtilsSmi.cs
- BaseHashHelper.cs
- MouseButtonEventArgs.cs
- TailPinnedEventArgs.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- GeneralTransform3D.cs
- CategoryAttribute.cs
- ToolStripPanelCell.cs
- DocumentPaginator.cs
- ProgressBar.cs
- UserPersonalizationStateInfo.cs
- KernelTypeValidation.cs
- Facet.cs
- WebControl.cs
- ValuePatternIdentifiers.cs
- HtmlInputCheckBox.cs
- XmlSerializableReader.cs
- ObservableCollection.cs
- MeshGeometry3D.cs
- MediaEntryAttribute.cs
- ContentPresenter.cs
- Unit.cs
- SerializableAttribute.cs
- ProfessionalColors.cs
- RootProjectionNode.cs
- MetadataItem.cs
- ActiveXHost.cs
- BasePropertyDescriptor.cs
- IssuedTokenClientElement.cs
- VisualBrush.cs
- Vector3DAnimation.cs
- LabelDesigner.cs
- Binding.cs
- BindingManagerDataErrorEventArgs.cs
- IntSumAggregationOperator.cs
- ObservableCollectionDefaultValueFactory.cs
- StrokeCollection.cs
- TextContainerChangedEventArgs.cs
- ChangePassword.cs
- ipaddressinformationcollection.cs
- XmlSignatureProperties.cs
- PlainXmlDeserializer.cs
- TextOutput.cs
- OciHandle.cs
- RawMouseInputReport.cs
- DataRelationCollection.cs
- DescendantBaseQuery.cs
- NativeMethods.cs
- PackageRelationshipSelector.cs
- PageRequestManager.cs
- GeometryConverter.cs
- UserControlParser.cs
- DataServicePagingProviderWrapper.cs
- BinaryReader.cs
- ContentFilePart.cs
- DbParameterHelper.cs
- WebPartConnectionsCancelEventArgs.cs
- SingleStorage.cs
- MaskInputRejectedEventArgs.cs
- RSAPKCS1KeyExchangeFormatter.cs
- CapabilitiesSection.cs
- TileBrush.cs
- CatalogZoneDesigner.cs
- AutoGeneratedField.cs
- PartialToken.cs
- TextElement.cs
- DocumentXmlWriter.cs
- DataMemberFieldEditor.cs
- ModuleElement.cs
- RequestCache.cs
- FunctionImportMapping.ReturnTypeRenameMapping.cs
- FilterEventArgs.cs
- NumericUpDown.cs
- DataGridColumnHeader.cs
- CroppedBitmap.cs
- DefaultBinder.cs
- ExtensionQuery.cs
- OutputScopeManager.cs
- XmlBufferReader.cs
- ComPersistableTypeElementCollection.cs
- Operators.cs
- ValidatorCollection.cs
- SqlClientFactory.cs
- PropertyRecord.cs
- TextPointer.cs
- TextViewSelectionProcessor.cs