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
- HtmlInputCheckBox.cs
- MessageVersionConverter.cs
- SplineKeyFrames.cs
- ValidatedControlConverter.cs
- SafeNativeMethodsOther.cs
- TableLayoutColumnStyleCollection.cs
- SignatureDescription.cs
- PaginationProgressEventArgs.cs
- JumpItem.cs
- BoundsDrawingContextWalker.cs
- XmlNotation.cs
- IItemContainerGenerator.cs
- EventMap.cs
- StateDesigner.LayoutSelectionGlyph.cs
- AuthorizationSection.cs
- StylusButtonCollection.cs
- SoapCodeExporter.cs
- SubclassTypeValidator.cs
- SHA256.cs
- BuildProviderUtils.cs
- _ContextAwareResult.cs
- DesignerSerializationOptionsAttribute.cs
- BinaryObjectReader.cs
- LabelTarget.cs
- ForeignKeyConstraint.cs
- SemanticBasicElement.cs
- ViewGenResults.cs
- ClientSideQueueItem.cs
- CompositeActivityTypeDescriptorProvider.cs
- SendMailErrorEventArgs.cs
- DefaultWorkflowSchedulerService.cs
- XsdDateTime.cs
- SQLInt32Storage.cs
- ClientTargetSection.cs
- NameNode.cs
- TypeUtils.cs
- ResourceContainer.cs
- AjaxFrameworkAssemblyAttribute.cs
- ProviderMetadata.cs
- KeyInstance.cs
- LayoutEditorPart.cs
- UnsafeNativeMethods.cs
- DesignerSerializationVisibilityAttribute.cs
- ClientFormsIdentity.cs
- ExpressionBinding.cs
- InternalUserCancelledException.cs
- DataColumnMappingCollection.cs
- SqlProviderManifest.cs
- PlainXmlSerializer.cs
- MarkupCompiler.cs
- UserNameSecurityTokenAuthenticator.cs
- PrivateFontCollection.cs
- ArrayMergeHelper.cs
- FolderLevelBuildProviderCollection.cs
- Calendar.cs
- DataControlFieldCell.cs
- OleDbParameterCollection.cs
- URLAttribute.cs
- BaseValidator.cs
- Helper.cs
- SizeConverter.cs
- UrlMapping.cs
- DocumentGrid.cs
- SafeNativeMethodsOther.cs
- AssemblySettingAttributes.cs
- ObjectDataProvider.cs
- HttpContextServiceHost.cs
- InputScope.cs
- EntityClientCacheKey.cs
- BaseParser.cs
- MenuItemBindingCollection.cs
- DiscoveryReference.cs
- FileUtil.cs
- XmlSerializerSection.cs
- EntityDataSourceState.cs
- DtrList.cs
- BinaryCommonClasses.cs
- StyleSelector.cs
- CompoundFileDeflateTransform.cs
- ConfigurationElementProperty.cs
- XamlHttpHandlerFactory.cs
- ExternalException.cs
- WebEvents.cs
- PrintDocument.cs
- TreeNodeCollection.cs
- ImageBrush.cs
- NamedObject.cs
- SafeMemoryMappedFileHandle.cs
- BooleanStorage.cs
- ProfessionalColorTable.cs
- DbFunctionCommandTree.cs
- BaseUriHelper.cs
- LogEntryHeaderDeserializer.cs
- StrongNameUtility.cs
- GridSplitterAutomationPeer.cs
- SqlCaseSimplifier.cs
- Int16Storage.cs
- ConnectionPoint.cs
- ForAllOperator.cs
- Publisher.cs