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
- ContentTextAutomationPeer.cs
- TemplateLookupAction.cs
- GenericTypeParameterBuilder.cs
- ByteAnimationUsingKeyFrames.cs
- TaskFactory.cs
- Rect.cs
- XPathNodeIterator.cs
- RemoteWebConfigurationHostServer.cs
- selecteditemcollection.cs
- Thread.cs
- RoleManagerSection.cs
- SimpleWorkerRequest.cs
- MenuItem.cs
- httpapplicationstate.cs
- ListenerPerfCounters.cs
- ContentDisposition.cs
- SvcMapFileLoader.cs
- ObjectDataSourceFilteringEventArgs.cs
- SpecialFolderEnumConverter.cs
- EditingScopeUndoUnit.cs
- DbConnectionOptions.cs
- OdbcUtils.cs
- TryExpression.cs
- Win32Exception.cs
- LoginViewDesigner.cs
- GlyphRun.cs
- WindowExtensionMethods.cs
- LinkLabel.cs
- SymbolType.cs
- XmlIlGenerator.cs
- InputScope.cs
- StreamBodyWriter.cs
- Set.cs
- XpsPackagingPolicy.cs
- DriveInfo.cs
- ISAPIRuntime.cs
- AxisAngleRotation3D.cs
- GridViewCellAutomationPeer.cs
- PermissionSetEnumerator.cs
- InternalMappingException.cs
- xmlfixedPageInfo.cs
- ProxyAttribute.cs
- ContainerParagraph.cs
- PageEventArgs.cs
- PersonalizationStateInfoCollection.cs
- MemoryMappedViewAccessor.cs
- DCSafeHandle.cs
- Mapping.cs
- ColorMatrix.cs
- Sql8ConformanceChecker.cs
- ExpandSegment.cs
- LayoutExceptionEventArgs.cs
- DefaultAssemblyResolver.cs
- XmlDomTextWriter.cs
- DecimalAnimationUsingKeyFrames.cs
- UnsafeNativeMethods.cs
- ColorTransform.cs
- SizeAnimationBase.cs
- TableAutomationPeer.cs
- CommandID.cs
- HotCommands.cs
- WindowsRichEditRange.cs
- Stackframe.cs
- mediaeventargs.cs
- GenericRootAutomationPeer.cs
- PasswordRecoveryAutoFormat.cs
- NativeCompoundFileAPIs.cs
- ArcSegment.cs
- Propagator.cs
- GestureRecognizer.cs
- Brush.cs
- SqlDataRecord.cs
- HandlerElement.cs
- unsafenativemethodsother.cs
- Publisher.cs
- ClientData.cs
- TextElementCollection.cs
- ListViewGroupItemCollection.cs
- DocumentPageTextView.cs
- GridView.cs
- MbpInfo.cs
- ResourcePool.cs
- LocalizabilityAttribute.cs
- SrgsOneOf.cs
- FeatureAttribute.cs
- Environment.cs
- MobileControlDesigner.cs
- _PooledStream.cs
- EncryptedData.cs
- PocoPropertyAccessorStrategy.cs
- WorkflowServiceOperationListItem.cs
- RecipientIdentity.cs
- RelationshipManager.cs
- Win32MouseDevice.cs
- PropertyPathConverter.cs
- LayoutUtils.cs
- BindingWorker.cs
- CodeTypeReferenceExpression.cs
- MinMaxParagraphWidth.cs
- StyleTypedPropertyAttribute.cs