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
- UnsafeNetInfoNativeMethods.cs
- ADMembershipUser.cs
- WorkflowOperationInvoker.cs
- XmlWrappingReader.cs
- XPathLexer.cs
- CollectionViewGroupInternal.cs
- EntityDataSourceChangedEventArgs.cs
- MissingMethodException.cs
- FormViewPageEventArgs.cs
- _ConnectionGroup.cs
- ChannelCredentials.cs
- ModuleElement.cs
- DbParameterHelper.cs
- LambdaValue.cs
- DocumentViewerAutomationPeer.cs
- SplitterPanel.cs
- DbConnectionClosed.cs
- ModelItemCollection.cs
- Shared.cs
- ValidationError.cs
- KeyEventArgs.cs
- UpDownEvent.cs
- ObjectStateEntryOriginalDbUpdatableDataRecord.cs
- ManipulationDevice.cs
- TraceContextRecord.cs
- XsltInput.cs
- SoapInteropTypes.cs
- ReachIDocumentPaginatorSerializer.cs
- _ChunkParse.cs
- XmlILModule.cs
- EditorZoneAutoFormat.cs
- TrackBarRenderer.cs
- TrackingProfile.cs
- XmlSchemaImporter.cs
- DocumentPageTextView.cs
- Int64Storage.cs
- Attributes.cs
- DataGridViewRowCancelEventArgs.cs
- ClassicBorderDecorator.cs
- InputProcessorProfiles.cs
- FixedSOMTable.cs
- DataObject.cs
- LongValidatorAttribute.cs
- CanonicalizationDriver.cs
- DataObjectSettingDataEventArgs.cs
- SpecularMaterial.cs
- FontDifferentiator.cs
- FormClosedEvent.cs
- Window.cs
- ClonableStack.cs
- UpdateTracker.cs
- _DigestClient.cs
- XmlArrayItemAttribute.cs
- DynamicMethod.cs
- TimeZoneInfo.cs
- HttpCookie.cs
- ResourceCategoryAttribute.cs
- XPathNode.cs
- DragEvent.cs
- AdRotatorDesigner.cs
- X509WindowsSecurityToken.cs
- HebrewNumber.cs
- CapiNative.cs
- XmlReader.cs
- TextCharacters.cs
- InfoCardBaseException.cs
- DBCommandBuilder.cs
- TreeViewItemAutomationPeer.cs
- ImageList.cs
- MimePart.cs
- HtmlSelect.cs
- WebPartsPersonalization.cs
- GeometryDrawing.cs
- RoutedEventArgs.cs
- Point3DConverter.cs
- OleDbMetaDataFactory.cs
- GenericTextProperties.cs
- LoaderAllocator.cs
- XmlDataSourceView.cs
- WindowsTab.cs
- SqlDataAdapter.cs
- CodeAccessPermission.cs
- HttpPostClientProtocol.cs
- RijndaelManaged.cs
- NameSpaceExtractor.cs
- Matrix3DConverter.cs
- ExceptionRoutedEventArgs.cs
- RelationshipEnd.cs
- PrivateFontCollection.cs
- CreateUserWizard.cs
- VScrollBar.cs
- LoginCancelEventArgs.cs
- Permission.cs
- DBBindings.cs
- TypeExtension.cs
- ToolStripDropDown.cs
- SystemResourceKey.cs
- BitmapEffectGeneralTransform.cs
- HandlerFactoryCache.cs
- NavigationWindowAutomationPeer.cs