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
- DbConnectionClosed.cs
- AttributeQuery.cs
- SqlCommandBuilder.cs
- Renderer.cs
- NameValuePermission.cs
- XmlHierarchicalDataSourceView.cs
- TemplateKeyConverter.cs
- PageAsyncTaskManager.cs
- Screen.cs
- FieldBuilder.cs
- TraceData.cs
- ExpressionTable.cs
- XpsThumbnail.cs
- DefaultIfEmptyQueryOperator.cs
- XPathBinder.cs
- XmlKeywords.cs
- CodeNamespace.cs
- MappingSource.cs
- CommandLibraryHelper.cs
- FileAuthorizationModule.cs
- RenderDataDrawingContext.cs
- WindowsHyperlink.cs
- Automation.cs
- XmlSchemaCollection.cs
- HandlerBase.cs
- __ConsoleStream.cs
- WebPartTransformer.cs
- XDRSchema.cs
- DocumentPage.cs
- CornerRadius.cs
- ContentElementCollection.cs
- DataGridViewCellErrorTextNeededEventArgs.cs
- ServerValidateEventArgs.cs
- ListViewItemMouseHoverEvent.cs
- BuildDependencySet.cs
- CodeChecksumPragma.cs
- ButtonBaseAutomationPeer.cs
- Pair.cs
- UserNameServiceElement.cs
- SafeBitVector32.cs
- Stream.cs
- Subtree.cs
- XmlCharCheckingWriter.cs
- Cursors.cs
- ObfuscateAssemblyAttribute.cs
- ValidationEventArgs.cs
- StateFinalizationDesigner.cs
- ScriptBehaviorDescriptor.cs
- ReflectPropertyDescriptor.cs
- FlowLayoutSettings.cs
- BindingSource.cs
- ExecutionContext.cs
- MessageBox.cs
- FolderLevelBuildProviderCollection.cs
- PageRequestManager.cs
- PeerNode.cs
- QuaternionAnimationBase.cs
- ControlPager.cs
- _BufferOffsetSize.cs
- EventDescriptor.cs
- WebPartConnectionCollection.cs
- OrderByExpression.cs
- CompilationLock.cs
- LinkGrep.cs
- MemoryResponseElement.cs
- ButtonFieldBase.cs
- PowerModeChangedEventArgs.cs
- XamlSerializationHelper.cs
- ObjectQueryState.cs
- SqlProviderServices.cs
- LogicalTreeHelper.cs
- WebPartDisplayModeCollection.cs
- ViewStateException.cs
- ByeMessage11.cs
- WmlImageAdapter.cs
- ThreadStartException.cs
- RawMouseInputReport.cs
- FlowDocumentScrollViewer.cs
- CollectionViewGroupInternal.cs
- FixedSOMFixedBlock.cs
- PeerApplicationLaunchInfo.cs
- Scene3D.cs
- ProcessManager.cs
- ControllableStoryboardAction.cs
- FileReservationCollection.cs
- HttpMethodAttribute.cs
- Unit.cs
- SerializationAttributes.cs
- DBCommand.cs
- SqlRowUpdatingEvent.cs
- TextProperties.cs
- XPathItem.cs
- FormViewDeletedEventArgs.cs
- XsdBuildProvider.cs
- ProfileService.cs
- MultipartContentParser.cs
- RepeatButton.cs
- ContainerAction.cs
- WebConfigurationHost.cs
- RelativeSource.cs