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
- ReceiveErrorHandling.cs
- HttpRawResponse.cs
- AutomationEventArgs.cs
- WebPartConnection.cs
- ListViewSelectEventArgs.cs
- PointValueSerializer.cs
- DockAndAnchorLayout.cs
- UTF32Encoding.cs
- ArgumentsParser.cs
- OrderByLifter.cs
- ParseElementCollection.cs
- EntityDataSourceSelectedEventArgs.cs
- NavigatorInput.cs
- TraceListeners.cs
- LocalizedNameDescriptionPair.cs
- ByteStream.cs
- TraversalRequest.cs
- SafePointer.cs
- Canvas.cs
- XmlBoundElement.cs
- BinaryObjectReader.cs
- NotificationContext.cs
- QueryAccessibilityHelpEvent.cs
- StatusStrip.cs
- MethodImplAttribute.cs
- GlobalDataBindingHandler.cs
- SqlDataSourceAdvancedOptionsForm.cs
- Queue.cs
- ProjectionPath.cs
- DecoderFallback.cs
- ReflectionHelper.cs
- XPathEmptyIterator.cs
- CryptoApi.cs
- CompiledRegexRunnerFactory.cs
- MessagePropertyVariants.cs
- SiteMapDataSourceView.cs
- FileReservationCollection.cs
- XsltConvert.cs
- SHA256Managed.cs
- SerializationEventsCache.cs
- PermissionListSet.cs
- DynamicPropertyReader.cs
- DesignerAdapterAttribute.cs
- IISUnsafeMethods.cs
- RuleInfoComparer.cs
- ControlEvent.cs
- DataGridViewCellStyle.cs
- NodeLabelEditEvent.cs
- OlePropertyStructs.cs
- ValidationEventArgs.cs
- SerializationException.cs
- XPathEmptyIterator.cs
- NamespaceTable.cs
- SimpleType.cs
- QueryAccessibilityHelpEvent.cs
- CollectionChangedEventManager.cs
- CompilerScopeManager.cs
- SafeNativeMethods.cs
- ConstraintStruct.cs
- PolyLineSegment.cs
- ConnectorSelectionGlyph.cs
- XmlCodeExporter.cs
- XhtmlBasicLiteralTextAdapter.cs
- RectIndependentAnimationStorage.cs
- ExceptionHelpers.cs
- SystemColorTracker.cs
- SendingRequestEventArgs.cs
- IssuedTokenParametersElement.cs
- DataServiceKeyAttribute.cs
- QueryPrefixOp.cs
- WindowsPen.cs
- EncryptedData.cs
- CompositeDataBoundControl.cs
- CategoryGridEntry.cs
- IPPacketInformation.cs
- FileSecurity.cs
- ArgumentOutOfRangeException.cs
- SqlWriter.cs
- XmlSchemaSimpleTypeRestriction.cs
- TreeViewBindingsEditorForm.cs
- ADMembershipUser.cs
- LiteralTextParser.cs
- DataBindingValueUIHandler.cs
- XamlToRtfParser.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- XmlSchemaAppInfo.cs
- EntityDataSourceValidationException.cs
- SchemeSettingElement.cs
- OutputCacheSettings.cs
- XmlSerializerFactory.cs
- XPathAncestorIterator.cs
- PropertyGridDesigner.cs
- CodePageUtils.cs
- PropertyContainer.cs
- UrlMappingCollection.cs
- OutputCacheModule.cs
- SourceFilter.cs
- DataBoundControl.cs
- SqlCacheDependencyDatabaseCollection.cs
- WebServiceFaultDesigner.cs