Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- CodeCastExpression.cs
- RTLAwareMessageBox.cs
- EntityContainerAssociationSet.cs
- DataGridViewBindingCompleteEventArgs.cs
- recordstate.cs
- BoundField.cs
- WebScriptMetadataMessage.cs
- PointConverter.cs
- TabletCollection.cs
- prefixendpointaddressmessagefiltertable.cs
- OracleSqlParser.cs
- DeploymentExceptionMapper.cs
- InputReport.cs
- XmlSchemaImport.cs
- XmlEntity.cs
- ParameterModifier.cs
- BadImageFormatException.cs
- CompositeActivityTypeDescriptor.cs
- EncryptedReference.cs
- InvokeMethodDesigner.xaml.cs
- KeyPressEvent.cs
- X509CertificateTokenFactoryCredential.cs
- DataGridViewBand.cs
- XmlDataSource.cs
- SafeCoTaskMem.cs
- XamlDesignerSerializationManager.cs
- WebHttpBindingElement.cs
- HttpChannelHelper.cs
- VirtualPathExtension.cs
- ActivityDesignerAccessibleObject.cs
- SurrogateEncoder.cs
- Style.cs
- ValidationEventArgs.cs
- EntityClientCacheKey.cs
- MetadataPropertyvalue.cs
- RequestSecurityTokenSerializer.cs
- ScrollChrome.cs
- CheckedPointers.cs
- QueueProcessor.cs
- backend.cs
- BuildProvider.cs
- _SslStream.cs
- SignedPkcs7.cs
- EnvelopedPkcs7.cs
- EdmRelationshipRoleAttribute.cs
- MLangCodePageEncoding.cs
- OrderingInfo.cs
- HttpPostedFile.cs
- UTF7Encoding.cs
- RadioButton.cs
- SafeLibraryHandle.cs
- StatusBarPanelClickEvent.cs
- AssemblyBuilder.cs
- Switch.cs
- CatalogPartChrome.cs
- SynchronizedDispatch.cs
- StatusBarItemAutomationPeer.cs
- GridToolTip.cs
- CreateUserErrorEventArgs.cs
- SettingsBindableAttribute.cs
- SqlDataSourceCache.cs
- DateTimeFormatInfoScanner.cs
- DuplicateWaitObjectException.cs
- DiscoveryReferences.cs
- EasingQuaternionKeyFrame.cs
- SiteMapDataSourceView.cs
- DataBoundControl.cs
- ThemeDictionaryExtension.cs
- XmlWrappingWriter.cs
- DockingAttribute.cs
- RijndaelCryptoServiceProvider.cs
- RoleGroup.cs
- CorrelationManager.cs
- EventMappingSettingsCollection.cs
- PixelFormats.cs
- Stack.cs
- HasCopySemanticsAttribute.cs
- SerializerWriterEventHandlers.cs
- RectAnimationUsingKeyFrames.cs
- AppDomainFactory.cs
- SqlFileStream.cs
- NavigationProgressEventArgs.cs
- DataGridSortCommandEventArgs.cs
- SecurityChannelFaultConverter.cs
- DataGridViewRowPostPaintEventArgs.cs
- LinkLabel.cs
- ActivitySurrogateSelector.cs
- XslAstAnalyzer.cs
- VectorConverter.cs
- SessionStateItemCollection.cs
- InterleavedZipPartStream.cs
- DesignerVerbCollection.cs
- ComplexPropertyEntry.cs
- ModelPerspective.cs
- AttributeUsageAttribute.cs
- ToolStrip.cs
- AutoScrollHelper.cs
- DescriptionAttribute.cs
- ProviderSettingsCollection.cs
- SerializationEventsCache.cs