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; ////// 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(); } } } // 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; ////// 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(); } } } // 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
- Utils.cs
- DataViewSetting.cs
- FormatException.cs
- CodeGenerator.cs
- UserPreferenceChangingEventArgs.cs
- XmlRootAttribute.cs
- CultureInfoConverter.cs
- TransactionChannelListener.cs
- IntPtr.cs
- ISAPIWorkerRequest.cs
- ContentValidator.cs
- DataGridViewSelectedRowCollection.cs
- TemplateKey.cs
- FixedPageStructure.cs
- XmlDataImplementation.cs
- RegexNode.cs
- AlignmentYValidation.cs
- WebPartsPersonalizationAuthorization.cs
- BooleanProjectedSlot.cs
- XmlWriterSettings.cs
- HiddenFieldPageStatePersister.cs
- BindingMemberInfo.cs
- RealizationDrawingContextWalker.cs
- HwndHostAutomationPeer.cs
- ParameterCollection.cs
- DataGridItemCollection.cs
- SiteMembershipCondition.cs
- CodeComment.cs
- UnsignedPublishLicense.cs
- Literal.cs
- CommandValueSerializer.cs
- DataGridViewRow.cs
- diagnosticsswitches.cs
- MarkedHighlightComponent.cs
- WebPartUserCapability.cs
- UniqueConstraint.cs
- SurrogateChar.cs
- Floater.cs
- GraphicsPathIterator.cs
- RouteParametersHelper.cs
- TableLayoutPanelResizeGlyph.cs
- CodeValidator.cs
- SimpleType.cs
- TextServicesContext.cs
- TextElement.cs
- DataGrid.cs
- TransportDefaults.cs
- ComponentCommands.cs
- ListControl.cs
- DocComment.cs
- TagMapInfo.cs
- EventPropertyMap.cs
- ChainOfDependencies.cs
- SymbolDocumentInfo.cs
- ParameterCollection.cs
- PrintPreviewGraphics.cs
- ParseChildrenAsPropertiesAttribute.cs
- TemplateXamlTreeBuilder.cs
- DataServiceProviderWrapper.cs
- NumericExpr.cs
- FixedBufferAttribute.cs
- UxThemeWrapper.cs
- StaticExtension.cs
- RuntimeHelpers.cs
- ComponentResourceKey.cs
- NetworkAddressChange.cs
- CodeChecksumPragma.cs
- EntityDataSourceDesignerHelper.cs
- TemplateBuilder.cs
- TreeNode.cs
- WebBrowser.cs
- Converter.cs
- Literal.cs
- ClientSideQueueItem.cs
- NetTcpBindingCollectionElement.cs
- AssemblyCache.cs
- ProfileGroupSettingsCollection.cs
- GcHandle.cs
- DataKeyArray.cs
- Point4DConverter.cs
- ToolStripSeparatorRenderEventArgs.cs
- EditingCoordinator.cs
- Substitution.cs
- GlyphCache.cs
- TcpTransportManager.cs
- MimeAnyImporter.cs
- unsafenativemethodsother.cs
- EllipticalNodeOperations.cs
- XmlSchemaAnyAttribute.cs
- VectorValueSerializer.cs
- FileFormatException.cs
- BufferedResponseStream.cs
- NativeMethods.cs
- QueryTaskGroupState.cs
- NullableFloatMinMaxAggregationOperator.cs
- Comparer.cs
- PrincipalPermission.cs
- IDReferencePropertyAttribute.cs
- GeneralTransformGroup.cs
- ResourceLoader.cs