Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / 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();
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- QilPatternFactory.cs
- Effect.cs
- TextFormatterImp.cs
- TypeLoadException.cs
- SqlNodeAnnotation.cs
- ResourcesBuildProvider.cs
- UInt64Converter.cs
- ObjectDataSourceDisposingEventArgs.cs
- ImageAnimator.cs
- XpsResource.cs
- TableColumnCollection.cs
- AdCreatedEventArgs.cs
- PrintDocument.cs
- CompositeControlDesigner.cs
- CipherData.cs
- httpserverutility.cs
- WebColorConverter.cs
- SmiEventSink.cs
- Table.cs
- SamlAudienceRestrictionCondition.cs
- FragmentQuery.cs
- PageAsyncTask.cs
- Image.cs
- HitTestWithGeometryDrawingContextWalker.cs
- GridEntryCollection.cs
- SearchForVirtualItemEventArgs.cs
- HttpProxyCredentialType.cs
- CustomErrorsSectionWrapper.cs
- StorageEntitySetMapping.cs
- Quad.cs
- WorkflowCreationContext.cs
- FileClassifier.cs
- CodeNamespaceImportCollection.cs
- UIntPtr.cs
- GeometryDrawing.cs
- DataControlFieldCollection.cs
- ErrorWrapper.cs
- FtpRequestCacheValidator.cs
- DesignerProperties.cs
- IOException.cs
- RelationshipEndMember.cs
- SqlDataSourceCommandParser.cs
- EnumCodeDomSerializer.cs
- StrokeCollection.cs
- SaveFileDialog.cs
- CheckoutException.cs
- PageAsyncTaskManager.cs
- RouteParametersHelper.cs
- X509SecurityToken.cs
- ToolboxComponentsCreatingEventArgs.cs
- NativeMethods.cs
- LOSFormatter.cs
- ListControl.cs
- SqlConnectionStringBuilder.cs
- KnownBoxes.cs
- BuildResult.cs
- PathFigure.cs
- EventItfInfo.cs
- MachineKeySection.cs
- BinHexEncoder.cs
- TempEnvironment.cs
- CommonProperties.cs
- LocatorManager.cs
- WebResourceAttribute.cs
- ResourceDescriptionAttribute.cs
- VisualBrush.cs
- ByteFacetDescriptionElement.cs
- SelectedDatesCollection.cs
- Process.cs
- TypeConverterAttribute.cs
- EventProviderClassic.cs
- DataBinding.cs
- DataSourceXmlSerializationAttribute.cs
- ItemMap.cs
- ToolStripGripRenderEventArgs.cs
- CompressEmulationStream.cs
- WhiteSpaceTrimStringConverter.cs
- PagesChangedEventArgs.cs
- StatusBar.cs
- _LocalDataStore.cs
- DesignerImageAdapter.cs
- Emitter.cs
- XmlNodeReader.cs
- SchemaDeclBase.cs
- LayoutSettings.cs
- CodeAccessPermission.cs
- TextSegment.cs
- HttpCookieCollection.cs
- CookieProtection.cs
- ActivationService.cs
- TransactedReceiveData.cs
- CodeGenerator.cs
- DispatcherSynchronizationContext.cs
- ReverseInheritProperty.cs
- ToolStripOverflow.cs
- DataGridViewCell.cs
- KeyValuePairs.cs
- AmbientLight.cs
- CleanUpVirtualizedItemEventArgs.cs
- ListViewSelectEventArgs.cs