Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / CompMod / System / ComponentModel / Design / DesignerTransaction.cs / 1 / DesignerTransaction.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
/*
*/
namespace System.ComponentModel.Design {
using System;
using System.Security.Permissions;
///
/// Identifies a transaction within a designer. Transactions are
/// used to wrap serveral changes into one unit of work, which
/// helps performance.
///
[HostProtection(SharedState = true)]
[System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.InheritanceDemand, Name = "FullTrust")]
public abstract class DesignerTransaction : IDisposable {
private bool committed = false;
private bool canceled = false;
private bool suppressedFinalization = false;
private string desc;
///
/// [To be supplied.]
///
protected DesignerTransaction() : this("") {
}
///
/// [To be supplied.]
///
protected DesignerTransaction(string description) {
this.desc = description;
}
///
/// [To be supplied.]
///
public bool Canceled {
get {
return canceled;
}
}
///
/// [To be supplied.]
///
public bool Committed {
get {
return committed;
}
}
///
/// [To be supplied.]
///
public string Description {
get {
return desc;
}
}
///
/// [To be supplied.]
///
public void Cancel() {
if (!canceled && !committed) {
canceled = true;
GC.SuppressFinalize(this);
suppressedFinalization = true;
OnCancel();
}
}
///
/// Commits this transaction. Once a transaction has
/// been committed, further calls to this method
/// will do nothing. You should always call this
/// method after creating a transaction to ensure
/// that the transaction is closed properly.
///
public void Commit() {
if (!committed && !canceled) {
committed = true;
GC.SuppressFinalize(this);
suppressedFinalization = true;
OnCommit();
}
}
///
/// User code should implement this method to perform
/// the actual work of committing a transaction.
///
protected abstract void OnCancel();
///
/// User code should implement this method to perform
/// the actual work of committing a transaction.
///
protected abstract void OnCommit();
///
/// Overrides Object to commit this transaction
/// in case the user forgot.
///
~DesignerTransaction() {
Dispose(false);
}
///
///
/// Private implementation of IDisaposable.
/// When a transaction is disposed it is
/// committed.
///
void IDisposable.Dispose() {
Dispose(true);
// note - Dispose calls Cancel which sets this bit, so
// this should never be hit.
//
if (!suppressedFinalization) {
System.Diagnostics.Debug.Fail("Invalid state. Dispose(true) should have called cancel which does the SuppressFinalize");
GC.SuppressFinalize(this);
}
}
protected virtual void Dispose(bool disposing) {
System.Diagnostics.Debug.Assert(disposing, "Designer transaction garbage collected, unable to cancel, please Cancel, Close, or Dispose your transaction.");
System.Diagnostics.Debug.Assert(disposing || canceled || committed, "Disposing DesignerTransaction that has not been comitted or canceled; forcing Cancel" );
Cancel();
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
/*
*/
namespace System.ComponentModel.Design {
using System;
using System.Security.Permissions;
///
/// Identifies a transaction within a designer. Transactions are
/// used to wrap serveral changes into one unit of work, which
/// helps performance.
///
[HostProtection(SharedState = true)]
[System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.InheritanceDemand, Name = "FullTrust")]
public abstract class DesignerTransaction : IDisposable {
private bool committed = false;
private bool canceled = false;
private bool suppressedFinalization = false;
private string desc;
///
/// [To be supplied.]
///
protected DesignerTransaction() : this("") {
}
///
/// [To be supplied.]
///
protected DesignerTransaction(string description) {
this.desc = description;
}
///
/// [To be supplied.]
///
public bool Canceled {
get {
return canceled;
}
}
///
/// [To be supplied.]
///
public bool Committed {
get {
return committed;
}
}
///
/// [To be supplied.]
///
public string Description {
get {
return desc;
}
}
///
/// [To be supplied.]
///
public void Cancel() {
if (!canceled && !committed) {
canceled = true;
GC.SuppressFinalize(this);
suppressedFinalization = true;
OnCancel();
}
}
///
/// Commits this transaction. Once a transaction has
/// been committed, further calls to this method
/// will do nothing. You should always call this
/// method after creating a transaction to ensure
/// that the transaction is closed properly.
///
public void Commit() {
if (!committed && !canceled) {
committed = true;
GC.SuppressFinalize(this);
suppressedFinalization = true;
OnCommit();
}
}
///
/// User code should implement this method to perform
/// the actual work of committing a transaction.
///
protected abstract void OnCancel();
///
/// User code should implement this method to perform
/// the actual work of committing a transaction.
///
protected abstract void OnCommit();
///
/// Overrides Object to commit this transaction
/// in case the user forgot.
///
~DesignerTransaction() {
Dispose(false);
}
///
///
/// Private implementation of IDisaposable.
/// When a transaction is disposed it is
/// committed.
///
void IDisposable.Dispose() {
Dispose(true);
// note - Dispose calls Cancel which sets this bit, so
// this should never be hit.
//
if (!suppressedFinalization) {
System.Diagnostics.Debug.Fail("Invalid state. Dispose(true) should have called cancel which does the SuppressFinalize");
GC.SuppressFinalize(this);
}
}
protected virtual void Dispose(bool disposing) {
System.Diagnostics.Debug.Assert(disposing, "Designer transaction garbage collected, unable to cancel, please Cancel, Close, or Dispose your transaction.");
System.Diagnostics.Debug.Assert(disposing || canceled || committed, "Disposing DesignerTransaction that has not been comitted or canceled; forcing Cancel" );
Cancel();
}
}
}
// 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
- WebPartEventArgs.cs
- CultureSpecificStringDictionary.cs
- ConnectionStringsExpressionEditor.cs
- CopyAttributesAction.cs
- SqlTypesSchemaImporter.cs
- BamlVersionHeader.cs
- ProcessModuleCollection.cs
- Size3D.cs
- DataGridViewRowCollection.cs
- FormViewModeEventArgs.cs
- Literal.cs
- Journaling.cs
- HttpRawResponse.cs
- AffineTransform3D.cs
- WebCodeGenerator.cs
- Translator.cs
- Win32Exception.cs
- HttpListenerPrefixCollection.cs
- ValidatorUtils.cs
- ConnectionOrientedTransportElement.cs
- TextBox.cs
- MultiPageTextView.cs
- HScrollBar.cs
- ServiceHostFactory.cs
- BaseTemplateBuildProvider.cs
- ExceptionHandlerDesigner.cs
- IdentityHolder.cs
- MDIControlStrip.cs
- ColumnResizeAdorner.cs
- CharUnicodeInfo.cs
- _SSPIWrapper.cs
- DefaultWorkflowTransactionService.cs
- Variable.cs
- ButtonStandardAdapter.cs
- VerificationAttribute.cs
- DesignTimeTemplateParser.cs
- CultureTableRecord.cs
- ComplexBindingPropertiesAttribute.cs
- PrivilegedConfigurationManager.cs
- autovalidator.cs
- OpenFileDialog.cs
- FixedPage.cs
- SafeSecurityHandles.cs
- SchemaMapping.cs
- GenericTextProperties.cs
- DrawingContextWalker.cs
- Currency.cs
- M3DUtil.cs
- MediaElementAutomationPeer.cs
- InlineUIContainer.cs
- TextBoxView.cs
- ContainerFilterService.cs
- ReferencedAssemblyResolver.cs
- ReflectionTypeLoadException.cs
- DSACryptoServiceProvider.cs
- FunctionQuery.cs
- Vertex.cs
- ComponentResourceKeyConverter.cs
- DataGridViewCellPaintingEventArgs.cs
- DefaultAsyncDataDispatcher.cs
- VariableAction.cs
- ImageProxy.cs
- HttpModulesSection.cs
- WindowHelperService.cs
- StoreItemCollection.Loader.cs
- SqlDataSourceRefreshSchemaForm.cs
- HierarchicalDataBoundControlAdapter.cs
- ListViewItem.cs
- SeparatorAutomationPeer.cs
- InstanceData.cs
- ZipIORawDataFileBlock.cs
- codemethodreferenceexpression.cs
- HandleRef.cs
- DbProviderConfigurationHandler.cs
- SqlProvider.cs
- RenderDataDrawingContext.cs
- CompressionTracing.cs
- PreProcessor.cs
- CodeArrayCreateExpression.cs
- EmptyStringExpandableObjectConverter.cs
- Line.cs
- xamlnodes.cs
- BitStack.cs
- VoiceObjectToken.cs
- WarningException.cs
- RegisteredHiddenField.cs
- MenuItemStyleCollection.cs
- Function.cs
- CopyOfAction.cs
- ControlPaint.cs
- WebPartMenuStyle.cs
- XMLUtil.cs
- ColorAnimationUsingKeyFrames.cs
- IItemContainerGenerator.cs
- RegularExpressionValidator.cs
- ObjectDataSourceMethodEditor.cs
- TreeChangeInfo.cs
- SymmetricSecurityProtocolFactory.cs
- IteratorFilter.cs
- httpstaticobjectscollection.cs