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
- DynamicDocumentPaginator.cs
- NamespaceCollection.cs
- ComplexPropertyEntry.cs
- FragmentQueryProcessor.cs
- SchemaTableOptionalColumn.cs
- PackagePartCollection.cs
- FormViewDeleteEventArgs.cs
- InheritanceContextChangedEventManager.cs
- TypeDescriptionProvider.cs
- SettingsPropertyNotFoundException.cs
- _CookieModule.cs
- IDispatchConstantAttribute.cs
- PackageRelationship.cs
- HyperLinkColumn.cs
- UserPreferenceChangingEventArgs.cs
- PeerNameRegistration.cs
- DelegatedStream.cs
- Queue.cs
- UpdatePanelControlTrigger.cs
- Expression.DebuggerProxy.cs
- HandleTable.cs
- HMACSHA1.cs
- ObjectPropertyMapping.cs
- DBAsyncResult.cs
- TextWriterTraceListener.cs
- KeyboardEventArgs.cs
- BinHexEncoder.cs
- SurrogateChar.cs
- CheckBoxRenderer.cs
- GridViewEditEventArgs.cs
- ExpressionBuilderContext.cs
- CodeMemberProperty.cs
- WorkflowWebHostingModule.cs
- base64Transforms.cs
- PenLineCapValidation.cs
- HostUtils.cs
- lengthconverter.cs
- EmissiveMaterial.cs
- RepeatButtonAutomationPeer.cs
- EventArgs.cs
- InfoCardRSACryptoProvider.cs
- StreamGeometry.cs
- XmlBinaryReader.cs
- TextDecorationCollection.cs
- HttpAsyncResult.cs
- CompilerTypeWithParams.cs
- BufferAllocator.cs
- MorphHelper.cs
- SelectorAutomationPeer.cs
- wgx_commands.cs
- InvalidOperationException.cs
- DataFieldCollectionEditor.cs
- XmlILConstructAnalyzer.cs
- ErrorProvider.cs
- SqlMethods.cs
- InternalConfigRoot.cs
- DataGridViewToolTip.cs
- ConsumerConnectionPointCollection.cs
- CompositeScriptReference.cs
- TextAction.cs
- SafeBitVector32.cs
- DbConnectionPoolIdentity.cs
- CatalogZone.cs
- Trace.cs
- FormConverter.cs
- LinqDataSourceUpdateEventArgs.cs
- SystemWebCachingSectionGroup.cs
- milexports.cs
- ClientSponsor.cs
- DataListCommandEventArgs.cs
- XhtmlBasicFormAdapter.cs
- AsyncOperationManager.cs
- StorageModelBuildProvider.cs
- MaterialGroup.cs
- IntSecurity.cs
- TemplatePagerField.cs
- PixelFormatConverter.cs
- XmlWellformedWriter.cs
- GeneratedView.cs
- AnnouncementInnerClientCD1.cs
- RegisteredExpandoAttribute.cs
- CodeStatementCollection.cs
- ScrollPattern.cs
- ObjectDataSourceView.cs
- Atom10FormatterFactory.cs
- ConfigurationErrorsException.cs
- InstanceData.cs
- DesignerAdapterAttribute.cs
- RepeatBehavior.cs
- CollectionViewGroup.cs
- OneOf.cs
- WorkflowViewElement.cs
- DecoderReplacementFallback.cs
- HijriCalendar.cs
- ListViewItem.cs
- DataGridRow.cs
- QilUnary.cs
- StylusPointCollection.cs
- BroadcastEventHelper.cs
- LinearKeyFrames.cs