Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- ConstructorBuilder.cs
- RegexWorker.cs
- _AuthenticationState.cs
- WindowsListViewItem.cs
- VoiceInfo.cs
- _Connection.cs
- SerializationException.cs
- Vector3DAnimationBase.cs
- FigureHelper.cs
- ConfigsHelper.cs
- StringUtil.cs
- TreeBuilderXamlTranslator.cs
- ObjectConverter.cs
- IdentifierService.cs
- XmlChildEnumerator.cs
- recordstate.cs
- ClientType.cs
- AsymmetricAlgorithm.cs
- CodeRegionDirective.cs
- LongPath.cs
- StructuralCache.cs
- ByteConverter.cs
- CallbackValidatorAttribute.cs
- Pen.cs
- DependencyPropertyChangedEventArgs.cs
- RotationValidation.cs
- ServiceDescriptionSerializer.cs
- FixedHyperLink.cs
- ObjectViewFactory.cs
- FixedHighlight.cs
- WindowsToolbar.cs
- DataGridViewButtonCell.cs
- ListDataHelper.cs
- cookiecontainer.cs
- BindingList.cs
- Subtract.cs
- ErrorBehavior.cs
- Binding.cs
- RtfControlWordInfo.cs
- FormatterServices.cs
- FragmentQuery.cs
- DynamicPropertyReader.cs
- Light.cs
- TTSEngineTypes.cs
- HttpHandlerAction.cs
- CatalogPartCollection.cs
- BuildManager.cs
- CapiSafeHandles.cs
- StateDesigner.Helpers.cs
- SpeakCompletedEventArgs.cs
- XamlWriterExtensions.cs
- XmlNodeChangedEventManager.cs
- Message.cs
- UrlMapping.cs
- Errors.cs
- FamilyMap.cs
- TextLine.cs
- DataServiceQuery.cs
- DiffuseMaterial.cs
- COM2TypeInfoProcessor.cs
- HttpDebugHandler.cs
- ScaleTransform.cs
- WebCategoryAttribute.cs
- util.cs
- DSASignatureDeformatter.cs
- AxHost.cs
- ControlIdConverter.cs
- QilInvoke.cs
- MessageLoggingElement.cs
- URL.cs
- AddInController.cs
- SHA1.cs
- DoubleAnimationUsingPath.cs
- HashCryptoHandle.cs
- XsdBuildProvider.cs
- InlineCollection.cs
- SamlEvidence.cs
- UpdateProgress.cs
- RealizationContext.cs
- WebPartConnectionsConnectVerb.cs
- ConditionalAttribute.cs
- InstanceCompleteException.cs
- ClientTarget.cs
- CachedTypeface.cs
- EntityDesignerUtils.cs
- ExecutedRoutedEventArgs.cs
- SessionStateUtil.cs
- Polygon.cs
- CodeTypeMemberCollection.cs
- _NegoStream.cs
- PeekCompletedEventArgs.cs
- AuthenticationService.cs
- ContextCorrelationInitializer.cs
- DSASignatureDeformatter.cs
- ProtocolInformationWriter.cs
- HtmlImage.cs
- HttpApplication.cs
- XmlSchemaDatatype.cs
- HtmlGenericControl.cs
- MemberAccessException.cs