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; ////// 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(); } } ///[To be supplied.] ////// 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
- WindowsStreamSecurityUpgradeProvider.cs
- ElapsedEventArgs.cs
- WindowHideOrCloseTracker.cs
- SqlNodeTypeOperators.cs
- TranslateTransform3D.cs
- ImageDrawing.cs
- DocumentSchemaValidator.cs
- AsyncSerializedWorker.cs
- SelectionGlyph.cs
- StickyNote.cs
- ColumnMapCopier.cs
- TextRangeSerialization.cs
- SqlTypeSystemProvider.cs
- SubpageParagraph.cs
- DataGridViewCellContextMenuStripNeededEventArgs.cs
- ScrollBar.cs
- DetailsViewUpdatedEventArgs.cs
- Point3DIndependentAnimationStorage.cs
- ThreadInterruptedException.cs
- DataServiceRequestOfT.cs
- BindingSource.cs
- VerticalAlignConverter.cs
- HierarchicalDataSourceIDConverter.cs
- FrameworkContentElementAutomationPeer.cs
- PropertySegmentSerializationProvider.cs
- WebPartConnectionsCancelVerb.cs
- ConfigurationException.cs
- XmlToDatasetMap.cs
- PropertyEntry.cs
- AssociationSet.cs
- AssertFilter.cs
- BadImageFormatException.cs
- HtmlFormParameterWriter.cs
- AstTree.cs
- PageCatalogPart.cs
- RichTextBox.cs
- NativeMethods.cs
- CompiledQuery.cs
- LocationUpdates.cs
- ManagementEventArgs.cs
- UnmanagedMarshal.cs
- MultipleViewProviderWrapper.cs
- SimpleMailWebEventProvider.cs
- TextBox.cs
- OpCodes.cs
- Symbol.cs
- Parsers.cs
- shaperfactory.cs
- TextViewSelectionProcessor.cs
- IdentifierCollection.cs
- InitializerFacet.cs
- TreeViewImageGenerator.cs
- AmbiguousMatchException.cs
- SchemaConstraints.cs
- PerformanceCounterPermission.cs
- FormatException.cs
- UnmanagedBitmapWrapper.cs
- CssClassPropertyAttribute.cs
- ConsumerConnectionPoint.cs
- TransformerConfigurationWizardBase.cs
- FormConverter.cs
- ExpanderAutomationPeer.cs
- ScrollBar.cs
- FeatureSupport.cs
- ButtonBaseAutomationPeer.cs
- BinHexEncoding.cs
- WindowsStatusBar.cs
- AxHostDesigner.cs
- CheckPair.cs
- DocumentApplicationJournalEntryEventArgs.cs
- ItemMap.cs
- QuaternionRotation3D.cs
- CodeDirectiveCollection.cs
- IOException.cs
- AmbientValueAttribute.cs
- TimeIntervalCollection.cs
- ConfigPathUtility.cs
- MultilineStringConverter.cs
- BamlBinaryReader.cs
- COM2FontConverter.cs
- ExplicitDiscriminatorMap.cs
- ObjectDataSourceEventArgs.cs
- RadioButton.cs
- CodeAttributeArgumentCollection.cs
- SapiRecognizer.cs
- DateRangeEvent.cs
- PathSegmentCollection.cs
- Delegate.cs
- XmlAttributeCache.cs
- SqlException.cs
- SimpleBitVector32.cs
- LinqDataView.cs
- DataSvcMapFileSerializer.cs
- PrtCap_Builder.cs
- ExternalDataExchangeClient.cs
- HandleRef.cs
- MessageQueuePermission.cs
- HttpTransportElement.cs
- CompositeCollection.cs
- InheritanceContextChangedEventManager.cs