Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- FontStyles.cs
- TranslateTransform.cs
- DbConnectionFactory.cs
- XmlTextWriter.cs
- lengthconverter.cs
- SrgsRule.cs
- FontSourceCollection.cs
- XmlDataContract.cs
- WebPartEditorCancelVerb.cs
- CustomErrorCollection.cs
- DataView.cs
- ProfileService.cs
- XmlAnyAttributeAttribute.cs
- ComponentRenameEvent.cs
- DropSource.cs
- ZeroOpNode.cs
- RtfToken.cs
- ExpressionHelper.cs
- MarkupProperty.cs
- UrlMappingsModule.cs
- MailMessageEventArgs.cs
- PolyQuadraticBezierSegment.cs
- GcHandle.cs
- OutputCache.cs
- EllipticalNodeOperations.cs
- FilePrompt.cs
- DataServiceResponse.cs
- CodeTypeDeclarationCollection.cs
- ListItemsCollectionEditor.cs
- SqlFunctions.cs
- BindingContext.cs
- WsatProxy.cs
- NonVisualControlAttribute.cs
- HttpWriter.cs
- ToolTipAutomationPeer.cs
- WsdlParser.cs
- ModelPropertyImpl.cs
- StateDesignerConnector.cs
- Emitter.cs
- CancelEventArgs.cs
- Aggregates.cs
- InputGestureCollection.cs
- GroupAggregateExpr.cs
- TypeHelpers.cs
- Slider.cs
- XmlConvert.cs
- CaseInsensitiveHashCodeProvider.cs
- NewArrayExpression.cs
- RelatedEnd.cs
- EventToken.cs
- PopOutPanel.cs
- ConfigurationManagerHelper.cs
- RightNameExpirationInfoPair.cs
- XmlSchemaAny.cs
- UnitySerializationHolder.cs
- Privilege.cs
- CodeSubDirectoriesCollection.cs
- SqlCacheDependencySection.cs
- Vector3dCollection.cs
- COM2FontConverter.cs
- StringKeyFrameCollection.cs
- DiscoveryDefaults.cs
- XmlObjectSerializerWriteContext.cs
- IncrementalCompileAnalyzer.cs
- AppSettingsExpressionBuilder.cs
- EventProvider.cs
- InputLanguageManager.cs
- SessionStateItemCollection.cs
- StorageInfo.cs
- SelectionEditingBehavior.cs
- MembershipSection.cs
- ImpersonateTokenRef.cs
- DispatcherTimer.cs
- ProxyGenerator.cs
- XPathBinder.cs
- InheritanceContextChangedEventManager.cs
- DataPagerFieldItem.cs
- BigInt.cs
- LogWriteRestartAreaState.cs
- TrackingProfile.cs
- ListViewDeleteEventArgs.cs
- MessageLogTraceRecord.cs
- ToolStripRenderEventArgs.cs
- PeerResolver.cs
- XmlConvert.cs
- DataGridTableCollection.cs
- MetadataArtifactLoaderCompositeFile.cs
- BevelBitmapEffect.cs
- documentsequencetextview.cs
- _TLSstream.cs
- WebBrowser.cs
- LicFileLicenseProvider.cs
- XmlSerializerNamespaces.cs
- HttpRequestCacheValidator.cs
- Rule.cs
- CroppedBitmap.cs
- FeatureSupport.cs
- HtmlAnchor.cs
- XmlSchemaSimpleTypeUnion.cs
- SafeThemeHandle.cs