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
- StrongNameKeyPair.cs
- TimeSpanValidatorAttribute.cs
- QueryExpr.cs
- SoapEnumAttribute.cs
- Error.cs
- _ScatterGatherBuffers.cs
- dataSvcMapFileLoader.cs
- BindableTemplateBuilder.cs
- FormViewUpdateEventArgs.cs
- SQLByte.cs
- ReflectionTypeLoadException.cs
- BamlRecordReader.cs
- InitializationEventAttribute.cs
- _emptywebproxy.cs
- DrawingBrush.cs
- HttpServerVarsCollection.cs
- CorrelationToken.cs
- PtsContext.cs
- DependencyObjectProvider.cs
- PresentationAppDomainManager.cs
- SequenceQuery.cs
- ErrorFormatterPage.cs
- PropertyKey.cs
- RelationshipConstraintValidator.cs
- DropDownList.cs
- FixedSOMPageConstructor.cs
- TimersDescriptionAttribute.cs
- Pen.cs
- ObjectSet.cs
- DesignerActionVerbList.cs
- EventListenerClientSide.cs
- WindowsTreeView.cs
- TableLayoutPanelCellPosition.cs
- RSAPKCS1SignatureDeformatter.cs
- ColorAnimationBase.cs
- HtmlButton.cs
- DateTimeUtil.cs
- RectangleHotSpot.cs
- Composition.cs
- HtmlLink.cs
- MediaSystem.cs
- EventListener.cs
- DesignerSerializerAttribute.cs
- DragDrop.cs
- XmlAnyElementAttribute.cs
- InfoCardProofToken.cs
- DrawListViewSubItemEventArgs.cs
- CLSCompliantAttribute.cs
- PointHitTestResult.cs
- CaretElement.cs
- MonitorWrapper.cs
- SqlTrackingService.cs
- SecurityDescriptor.cs
- TextEffectResolver.cs
- ControlAdapter.cs
- State.cs
- RunClient.cs
- RuleElement.cs
- CodeMemberMethod.cs
- Profiler.cs
- Button.cs
- ApplicationBuildProvider.cs
- DesignTimeTemplateParser.cs
- SqlInfoMessageEvent.cs
- WSSecureConversationFeb2005.cs
- CloseCryptoHandleRequest.cs
- EntityDataSource.cs
- RelationshipDetailsCollection.cs
- BinaryNode.cs
- Visual.cs
- ConfigXmlReader.cs
- ContentWrapperAttribute.cs
- BuildDependencySet.cs
- COAUTHINFO.cs
- ReferenceTypeElement.cs
- SmiGettersStream.cs
- ColumnResult.cs
- HierarchicalDataBoundControlAdapter.cs
- ImageConverter.cs
- UrlAuthorizationModule.cs
- TextEditorContextMenu.cs
- DocumentViewer.cs
- Funcletizer.cs
- CroppedBitmap.cs
- HttpDebugHandler.cs
- ResourceDescriptionAttribute.cs
- MaterialCollection.cs
- HtmlControlPersistable.cs
- Vector3DCollection.cs
- SerialStream.cs
- InputEventArgs.cs
- ZoneButton.cs
- URLMembershipCondition.cs
- XPathSingletonIterator.cs
- Int16Converter.cs
- EncoderNLS.cs
- LeaseManager.cs
- SizeChangedInfo.cs
- TemplateManager.cs
- TextBoxRenderer.cs