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
- DataGridCellClipboardEventArgs.cs
- UnauthorizedWebPart.cs
- UrlMappingCollection.cs
- Vector3DAnimationUsingKeyFrames.cs
- FontUnit.cs
- RequiredAttributeAttribute.cs
- WebConfigurationManager.cs
- MultiTrigger.cs
- DbUpdateCommandTree.cs
- Int16Animation.cs
- TreeNodeClickEventArgs.cs
- CodeNamespaceImport.cs
- DecimalAnimation.cs
- UnicodeEncoding.cs
- GraphicsPathIterator.cs
- DocumentOrderComparer.cs
- HttpRequestBase.cs
- MultitargetingHelpers.cs
- DetailsViewModeEventArgs.cs
- WebPartCollection.cs
- WebReferencesBuildProvider.cs
- NamedPipeTransportSecurity.cs
- EventPrivateKey.cs
- DefaultHttpHandler.cs
- TemplateManager.cs
- AlgoModule.cs
- NullRuntimeConfig.cs
- X509CertificateStore.cs
- BooleanToSelectiveScrollingOrientationConverter.cs
- SHA256Cng.cs
- CompleteWizardStep.cs
- TextEndOfLine.cs
- Soap12ProtocolReflector.cs
- EncryptedData.cs
- DbConnectionInternal.cs
- Dynamic.cs
- printdlgexmarshaler.cs
- PageBreakRecord.cs
- Parser.cs
- CodeFieldReferenceExpression.cs
- Queue.cs
- ArrayElementGridEntry.cs
- Rules.cs
- Border.cs
- GridViewCancelEditEventArgs.cs
- PaperSource.cs
- DynamicDiscoveryDocument.cs
- SessionEndingEventArgs.cs
- Point3DCollectionValueSerializer.cs
- ThreadLocal.cs
- DockPanel.cs
- documentsequencetextpointer.cs
- DataServiceContext.cs
- DoubleStorage.cs
- ControlBuilderAttribute.cs
- DataSpaceManager.cs
- MouseEvent.cs
- ColorContext.cs
- EtwTrace.cs
- InputLanguageManager.cs
- Vector3D.cs
- Header.cs
- Section.cs
- CodeDirectoryCompiler.cs
- ValidatedControlConverter.cs
- CrossContextChannel.cs
- EdmProperty.cs
- TimeStampChecker.cs
- KeySpline.cs
- ellipse.cs
- AutomationPeer.cs
- SqlInfoMessageEvent.cs
- TextServicesLoader.cs
- OleDbWrapper.cs
- SizeConverter.cs
- CompositeDuplexBindingElement.cs
- TemplateEditingFrame.cs
- XmlKeywords.cs
- CharacterString.cs
- MimeObjectFactory.cs
- DbDataRecord.cs
- ProgressBarBrushConverter.cs
- VisualStyleRenderer.cs
- COM2AboutBoxPropertyDescriptor.cs
- CompiledRegexRunner.cs
- GeneralTransform3DTo2D.cs
- WaitHandle.cs
- VersionedStreamOwner.cs
- PermissionToken.cs
- TextAdaptor.cs
- DeferredTextReference.cs
- SizeChangedEventArgs.cs
- PageClientProxyGenerator.cs
- StreamAsIStream.cs
- UnauthorizedWebPart.cs
- ActiveXHelper.cs
- DesignerHierarchicalDataSourceView.cs
- RewritingProcessor.cs
- AstTree.cs
- ListViewCommandEventArgs.cs