Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / CompMod / System / ComponentModel / Design / DesignerTransaction.cs / 1305376 / 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
- ProfilePropertySettingsCollection.cs
- ControlValuePropertyAttribute.cs
- ToolStripSettings.cs
- ImageMetadata.cs
- ListViewItem.cs
- TableHeaderCell.cs
- DebugView.cs
- IPipelineRuntime.cs
- ListItem.cs
- ValidationErrorCollection.cs
- HttpListener.cs
- RealProxy.cs
- ServiceDefaults.cs
- GregorianCalendarHelper.cs
- ContentDesigner.cs
- Site.cs
- TextOutput.cs
- GeometryHitTestParameters.cs
- TemplateGroupCollection.cs
- SafeNativeMethods.cs
- FontResourceCache.cs
- UriPrefixTable.cs
- XMLUtil.cs
- PersonalizationAdministration.cs
- TrackBarDesigner.cs
- VisualStyleTypesAndProperties.cs
- PropertyRecord.cs
- ProtocolState.cs
- InvokeGenerator.cs
- UInt64Converter.cs
- XmlSerializationReader.cs
- SettingsPropertyValue.cs
- HttpModulesSection.cs
- MemberInfoSerializationHolder.cs
- RoleGroupCollection.cs
- FilterEventArgs.cs
- QueryCursorEventArgs.cs
- DesignerPerfEventProvider.cs
- ColorTransform.cs
- TypeNameConverter.cs
- BuildProvidersCompiler.cs
- PropertyMetadata.cs
- SvcFileManager.cs
- DataGridViewRowErrorTextNeededEventArgs.cs
- COM2ColorConverter.cs
- EndEvent.cs
- UIPermission.cs
- AnonymousIdentificationModule.cs
- QueryConverter.cs
- UrlMappingsModule.cs
- HttpServerUtilityWrapper.cs
- EnumUnknown.cs
- DataGridViewRowHeightInfoNeededEventArgs.cs
- ISCIIEncoding.cs
- ReadOnlyDictionary.cs
- ValidatingReaderNodeData.cs
- RegistryKey.cs
- ConfigurationManagerHelperFactory.cs
- ApplicationActivator.cs
- PageVisual.cs
- WindowInteropHelper.cs
- XmlNodeComparer.cs
- SspiSafeHandles.cs
- MatrixKeyFrameCollection.cs
- IsolatedStorageFileStream.cs
- TreeViewItemAutomationPeer.cs
- PeoplePickerWrapper.cs
- FontDriver.cs
- NullRuntimeConfig.cs
- JsonClassDataContract.cs
- DataSourceXmlAttributeAttribute.cs
- PrinterUnitConvert.cs
- QilChoice.cs
- EditCommandColumn.cs
- ProjectionCamera.cs
- FixedStringLookup.cs
- ToolStripMenuItemCodeDomSerializer.cs
- EntityConnectionStringBuilder.cs
- StoreItemCollection.Loader.cs
- StylusButtonEventArgs.cs
- TcpAppDomainProtocolHandler.cs
- CapabilitiesUse.cs
- LifetimeServices.cs
- HtmlInputText.cs
- KeyValuePair.cs
- BinaryMethodMessage.cs
- WebPageTraceListener.cs
- DataTemplate.cs
- Camera.cs
- LiteralControl.cs
- VisualStyleRenderer.cs
- EntityConnection.cs
- WebPartsPersonalization.cs
- QueryCacheKey.cs
- DoubleLinkList.cs
- DesignerActionPanel.cs
- DESCryptoServiceProvider.cs
- ScriptControl.cs
- DockPanel.cs
- TableRowGroup.cs