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;
///
///
/// [To be supplied.]
///
public class MessageQueueTransaction : IDisposable {
private ITransaction internalTransaction;
private MessageQueueTransactionStatus transactionStatus;
private bool disposed;
///
///
///
/// Creates a new Message Queuing internal transaction context.
///
///
public MessageQueueTransaction() {
this.transactionStatus = MessageQueueTransactionStatus.Initialized;
}
internal ITransaction InnerTransaction {
get {
return this.internalTransaction;
}
}
///
///
///
/// The status of the transaction that this object represents.
///
///
public MessageQueueTransactionStatus Status {
get {
return this.transactionStatus;
}
}
///
///
///
/// Rolls back the pending internal transaction.
///
///
public void Abort() {
lock (this) {
if (this.internalTransaction == null)
throw new InvalidOperationException(Res.GetString(Res.TransactionNotStarted));
else {
this.AbortInternalTransaction();
}
}
}
///
///
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;
}
///
///
///
/// Begins a new Message Queuing internal transaction context.
///
///
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;
}
}
}
///
///
internal ITransaction BeginQueueOperation() {
#pragma warning disable 0618
//@
Monitor.Enter(this);
#pragma warning restore 0618
return this.internalTransaction;
}
///
///
///
/// Commits a pending internal transaction.
///
///
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;
}
}
}
///
///
///
/// Disposes this transaction instance, if it is in a
/// pending status, the transaction will be aborted.
///
///
public void Dispose() {
Dispose(true);
GC.SuppressFinalize(this);
}
///
///
///
///
///
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
- IndicFontClient.cs
- OperationFormatUse.cs
- InvalidFilterCriteriaException.cs
- DefaultEventAttribute.cs
- ObjectDesignerDataSourceView.cs
- LazyLoadBehavior.cs
- ToolStripMenuItem.cs
- QilVisitor.cs
- RenderingBiasValidation.cs
- ExpressionHelper.cs
- XsltContext.cs
- SchemaTypeEmitter.cs
- FileVersionInfo.cs
- DbExpressionBuilder.cs
- DataColumnMappingCollection.cs
- nulltextcontainer.cs
- Registry.cs
- ContextItemManager.cs
- hresults.cs
- OrderByQueryOptionExpression.cs
- DetailsViewPageEventArgs.cs
- SqlDataSourceStatusEventArgs.cs
- CreateRefExpr.cs
- BitmapEffectCollection.cs
- EntityDataSourceWrapperCollection.cs
- WebPartCollection.cs
- OrderPreservingSpoolingTask.cs
- TextSelectionHelper.cs
- ReferenceConverter.cs
- PropertyToken.cs
- TextFindEngine.cs
- CSharpCodeProvider.cs
- SortQuery.cs
- ActivityTypeDesigner.xaml.cs
- FlowDocumentPageViewerAutomationPeer.cs
- EventManager.cs
- DataGridViewCellStyleChangedEventArgs.cs
- SystemResourceKey.cs
- DefaultBindingPropertyAttribute.cs
- TreeViewEvent.cs
- CompiledQuery.cs
- RequestBringIntoViewEventArgs.cs
- GeometryConverter.cs
- XmlSerializableReader.cs
- StorageModelBuildProvider.cs
- CapabilitiesState.cs
- LineUtil.cs
- _BufferOffsetSize.cs
- FreezableOperations.cs
- EntityDataSourceSelectingEventArgs.cs
- TemplateBaseAction.cs
- Reference.cs
- ReaderWriterLockWrapper.cs
- OracleNumber.cs
- AutoResizedEvent.cs
- DataGridCellsPanel.cs
- RankException.cs
- EntityClassGenerator.cs
- DataGridViewCell.cs
- DataIdProcessor.cs
- ImageClickEventArgs.cs
- SpecialFolderEnumConverter.cs
- Trace.cs
- BooleanKeyFrameCollection.cs
- ManagementEventArgs.cs
- HitTestWithGeometryDrawingContextWalker.cs
- ProcessDesigner.cs
- TextRange.cs
- ColorAnimationUsingKeyFrames.cs
- ShaderRenderModeValidation.cs
- BinaryObjectInfo.cs
- ItemCheckedEvent.cs
- SqlCacheDependencyDatabaseCollection.cs
- XmlNodeChangedEventArgs.cs
- Panel.cs
- BinaryConverter.cs
- TreeNodeEventArgs.cs
- MemoryMappedFile.cs
- ConfigurationValidatorAttribute.cs
- WebServicesInteroperability.cs
- SpecialTypeDataContract.cs
- KeyboardEventArgs.cs
- FormsAuthenticationUser.cs
- SafeArrayRankMismatchException.cs
- ConditionalAttribute.cs
- XpsThumbnail.cs
- GridViewSelectEventArgs.cs
- StrokeNodeOperations.cs
- EditorPart.cs
- CornerRadius.cs
- DbProviderFactoriesConfigurationHandler.cs
- ItemsPanelTemplate.cs
- SqlProcedureAttribute.cs
- SqlGatherConsumedAliases.cs
- FileFormatException.cs
- PrincipalPermission.cs
- SelectionRangeConverter.cs
- AnnotationObservableCollection.cs
- AssociationEndMember.cs
- XmlCharacterData.cs