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
- Visitor.cs
- Touch.cs
- XomlSerializationHelpers.cs
- ViewDesigner.cs
- SoapEnumAttribute.cs
- CodePropertyReferenceExpression.cs
- ListItem.cs
- X509IssuerSerialKeyIdentifierClause.cs
- Parser.cs
- NonSerializedAttribute.cs
- UpdateCompiler.cs
- BaseAddressPrefixFilterElement.cs
- _ListenerResponseStream.cs
- EncryptedPackageFilter.cs
- ValidationSummary.cs
- DeviceContext2.cs
- HttpCachePolicyElement.cs
- ManagementEventArgs.cs
- Contracts.cs
- NativeActivityTransactionContext.cs
- EnumValAlphaComparer.cs
- UnauthorizedWebPart.cs
- MapPathBasedVirtualPathProvider.cs
- ExceptionWrapper.cs
- DocumentPageHost.cs
- AccessDataSource.cs
- LockRecursionException.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- EntityStoreSchemaGenerator.cs
- WindowsButton.cs
- DiscoveryDocumentSearchPattern.cs
- ElementNotEnabledException.cs
- WebPartVerb.cs
- OleStrCAMarshaler.cs
- Timeline.cs
- ReadWriteObjectLock.cs
- ManifestResourceInfo.cs
- FileSystemInfo.cs
- GC.cs
- cookiecontainer.cs
- SingleStorage.cs
- RequestCacheManager.cs
- ContainerVisual.cs
- LayoutSettings.cs
- BufferedStream.cs
- XmlNamespaceMapping.cs
- XPathDocumentBuilder.cs
- TypeUtils.cs
- StorageModelBuildProvider.cs
- FacetValueContainer.cs
- HtmlInputHidden.cs
- SoapSchemaImporter.cs
- MoveSizeWinEventHandler.cs
- SkewTransform.cs
- ThaiBuddhistCalendar.cs
- Selection.cs
- ActiveXContainer.cs
- SQLDoubleStorage.cs
- TrayIconDesigner.cs
- XsdBuildProvider.cs
- SiteMapHierarchicalDataSourceView.cs
- _ListenerAsyncResult.cs
- RecordManager.cs
- DataGridViewComboBoxColumnDesigner.cs
- SHA1Cng.cs
- DbConnectionPoolOptions.cs
- MessageSecurityOverHttpElement.cs
- ListItemCollection.cs
- BuildDependencySet.cs
- CodeAttributeDeclarationCollection.cs
- BindingGraph.cs
- ClusterUtils.cs
- NaturalLanguageHyphenator.cs
- EncryptedKey.cs
- ListViewHitTestInfo.cs
- ConfigurationValue.cs
- DefaultPrintController.cs
- AssemblyBuilderData.cs
- MethodSignatureGenerator.cs
- HtmlTable.cs
- BitStream.cs
- EventHandlersStore.cs
- NameValueSectionHandler.cs
- UndirectedGraph.cs
- MapPathBasedVirtualPathProvider.cs
- ApplicationFileCodeDomTreeGenerator.cs
- List.cs
- Atom10FormatterFactory.cs
- SchemaElementLookUpTableEnumerator.cs
- ImmutableObjectAttribute.cs
- WebPartRestoreVerb.cs
- QilInvoke.cs
- CacheVirtualItemsEvent.cs
- CompositeFontParser.cs
- DoubleAnimation.cs
- ReversePositionQuery.cs
- EncryptedKeyIdentifierClause.cs
- Hashtable.cs
- TargetFrameworkUtil.cs
- AutoGeneratedFieldProperties.cs