Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / 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(); } } }
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- FontSizeConverter.cs
- SymLanguageVendor.cs
- RSAOAEPKeyExchangeDeformatter.cs
- NameValuePermission.cs
- AssemblySettingAttributes.cs
- ImageClickEventArgs.cs
- XPathNavigatorKeyComparer.cs
- SerializableReadOnlyDictionary.cs
- TreeNode.cs
- DataServices.cs
- EdmProviderManifest.cs
- EditorPartChrome.cs
- SqlDataAdapter.cs
- DesignerActionItem.cs
- Hash.cs
- StylusEventArgs.cs
- StyleSelector.cs
- SpellCheck.cs
- SymLanguageType.cs
- SoundPlayerAction.cs
- CLRBindingWorker.cs
- DoubleStorage.cs
- Misc.cs
- UnionCodeGroup.cs
- DataGridColumn.cs
- ControlUtil.cs
- AsymmetricCryptoHandle.cs
- PathGeometry.cs
- GroupLabel.cs
- TextModifierScope.cs
- ReceiveContextCollection.cs
- AsmxEndpointPickerExtension.cs
- Int32EqualityComparer.cs
- NavigationProgressEventArgs.cs
- FieldBuilder.cs
- ListControlConvertEventArgs.cs
- ExternalCalls.cs
- CodeTypeDeclaration.cs
- MissingMemberException.cs
- _emptywebproxy.cs
- SimpleApplicationHost.cs
- Viewport2DVisual3D.cs
- GACMembershipCondition.cs
- DesignerCategoryAttribute.cs
- DeleteMemberBinder.cs
- ZipArchive.cs
- BufferAllocator.cs
- QueryExpr.cs
- TraceContextEventArgs.cs
- ProtocolsConfiguration.cs
- ItemsControl.cs
- OdbcEnvironment.cs
- DataPointer.cs
- DbParameterCollectionHelper.cs
- SBCSCodePageEncoding.cs
- EditingCoordinator.cs
- WriteableOnDemandStream.cs
- Types.cs
- BuildProvider.cs
- Conditional.cs
- _SslState.cs
- WasEndpointConfigContainer.cs
- ToolStripDesignerUtils.cs
- SurrogateEncoder.cs
- LexicalChunk.cs
- DbProviderFactoriesConfigurationHandler.cs
- SuspendDesigner.cs
- LiteralDesigner.cs
- LexicalChunk.cs
- MdiWindowListItemConverter.cs
- OleDbEnumerator.cs
- PrintPreviewDialog.cs
- DesignerAttribute.cs
- CodeGroup.cs
- TailPinnedEventArgs.cs
- SerializerWriterEventHandlers.cs
- MessageHeaders.cs
- CompilerGlobalScopeAttribute.cs
- ThousandthOfEmRealDoubles.cs
- ConfigurationElement.cs
- BezierSegment.cs
- ListDictionary.cs
- LogLogRecord.cs
- IgnoreSectionHandler.cs
- MailWriter.cs
- SystemThemeKey.cs
- AmbientEnvironment.cs
- securitycriticaldata.cs
- ThemeConfigurationDialog.cs
- DomainConstraint.cs
- PersonalizationStateInfo.cs
- Propagator.ExtentPlaceholderCreator.cs
- WebPartExportVerb.cs
- DataGridViewDataConnection.cs
- TableProvider.cs
- InstanceOwnerQueryResult.cs
- SoapException.cs
- Visitor.cs
- ActivityCollectionMarkupSerializer.cs
- DataGridAddNewRow.cs