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
- HashStream.cs
- ActivityBindForm.cs
- IisTraceWebEventProvider.cs
- QueryExpr.cs
- sqlcontext.cs
- MexTcpBindingElement.cs
- EventHandlingScope.cs
- SqlGenericUtil.cs
- TracingConnectionInitiator.cs
- SimpleTextLine.cs
- NetworkAddressChange.cs
- Exceptions.cs
- CheckBox.cs
- CacheSection.cs
- Application.cs
- CollaborationHelperFunctions.cs
- BitmapEffectGroup.cs
- DataGridCell.cs
- SafeFileMappingHandle.cs
- RectangleF.cs
- _ListenerAsyncResult.cs
- HttpGetProtocolImporter.cs
- WindowsSysHeader.cs
- JsonServiceDocumentSerializer.cs
- PageSetupDialog.cs
- CompositeCollectionView.cs
- PolicyManager.cs
- ErrorWrapper.cs
- SystemMulticastIPAddressInformation.cs
- HierarchicalDataTemplate.cs
- XmlDomTextWriter.cs
- ItemsChangedEventArgs.cs
- DataContext.cs
- OdbcUtils.cs
- ParameterModifier.cs
- ApplicationActivator.cs
- ServiceReference.cs
- Point4D.cs
- DbConnectionPoolIdentity.cs
- XmlChildNodes.cs
- DelegateTypeInfo.cs
- DataGridViewColumnCollection.cs
- TargetPerspective.cs
- CheckBoxRenderer.cs
- XmlSchemaInferenceException.cs
- TrimSurroundingWhitespaceAttribute.cs
- CodeTryCatchFinallyStatement.cs
- DeleteBookmarkScope.cs
- CodeExpressionCollection.cs
- Cell.cs
- XamlNamespaceHelper.cs
- ResourceDescriptionAttribute.cs
- TraceXPathNavigator.cs
- Track.cs
- ParseChildrenAsPropertiesAttribute.cs
- HttpModuleCollection.cs
- PrePrepareMethodAttribute.cs
- ContentPathSegment.cs
- DigitalSignatureProvider.cs
- DataStreams.cs
- DefaultSerializationProviderAttribute.cs
- DefaultTextStoreTextComposition.cs
- JulianCalendar.cs
- TraversalRequest.cs
- DictionaryEditChange.cs
- HtmlUtf8RawTextWriter.cs
- BigInt.cs
- LocalizabilityAttribute.cs
- Clipboard.cs
- CollectionsUtil.cs
- ConnectionInterfaceCollection.cs
- LongAverageAggregationOperator.cs
- ConfigurationManagerHelper.cs
- HandleCollector.cs
- ElasticEase.cs
- SystemNetHelpers.cs
- TreeViewDesigner.cs
- MaskedTextBoxDesignerActionList.cs
- SystemParameters.cs
- TextBounds.cs
- RecommendedAsConfigurableAttribute.cs
- Invariant.cs
- XmlSchemaDatatype.cs
- ipaddressinformationcollection.cs
- PersonalizablePropertyEntry.cs
- HtmlLink.cs
- CapabilitiesRule.cs
- UserControlBuildProvider.cs
- View.cs
- CollectionChangeEventArgs.cs
- DBConcurrencyException.cs
- SchemaEntity.cs
- SqlConnectionPoolProviderInfo.cs
- ExportOptions.cs
- Typography.cs
- TextElement.cs
- VarRefManager.cs
- DownloadProgressEventArgs.cs
- WindowsFormsHostAutomationPeer.cs
- DataGridTableCollection.cs