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
- RequestQueue.cs
- TypedElement.cs
- _AutoWebProxyScriptEngine.cs
- SQLBinary.cs
- HttpApplication.cs
- SettingsAttributeDictionary.cs
- XmlSchemaInclude.cs
- ErrorLog.cs
- DesignerTextWriter.cs
- WebServiceFault.cs
- PinnedBufferMemoryStream.cs
- AssemblyUtil.cs
- MappingModelBuildProvider.cs
- RelatedEnd.cs
- EditCommandColumn.cs
- FormClosingEvent.cs
- ClientProxyGenerator.cs
- TableLayoutCellPaintEventArgs.cs
- StackSpiller.Temps.cs
- SqlFileStream.cs
- ConsumerConnectionPoint.cs
- CopyOnWriteList.cs
- ListenerServiceInstallComponent.cs
- SqlTrackingService.cs
- DictionaryContent.cs
- IPHostEntry.cs
- JsonFormatWriterGenerator.cs
- ReadOnlyDataSourceView.cs
- SegmentInfo.cs
- AdRotatorDesigner.cs
- DictionaryManager.cs
- SortKey.cs
- TemplateManager.cs
- ModelTypeConverter.cs
- SynchronizationContext.cs
- RelatedCurrencyManager.cs
- GcHandle.cs
- EntityConnectionStringBuilderItem.cs
- XmlTypeAttribute.cs
- AuthenticatedStream.cs
- PropertyDescriptor.cs
- EntityContainerEmitter.cs
- streamingZipPartStream.cs
- datacache.cs
- DataControlLinkButton.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- TextServicesManager.cs
- DefaultValueTypeConverter.cs
- InstanceData.cs
- TreeViewDataItemAutomationPeer.cs
- AdvancedBindingEditor.cs
- StaticContext.cs
- DocumentXmlWriter.cs
- HtmlTextArea.cs
- PointLightBase.cs
- GestureRecognitionResult.cs
- Canvas.cs
- StreamGeometry.cs
- ProtocolsConfiguration.cs
- ToolboxItemFilterAttribute.cs
- ConfigXmlElement.cs
- NativeMethods.cs
- AbsoluteQuery.cs
- SearchExpression.cs
- DataContractAttribute.cs
- UdpChannelFactory.cs
- ScrollChrome.cs
- UIPermission.cs
- UnsafeNativeMethods.cs
- XmlBinaryReader.cs
- Range.cs
- NameTable.cs
- SpeechAudioFormatInfo.cs
- ProcessModuleCollection.cs
- WebPartMinimizeVerb.cs
- UnmanagedMemoryStreamWrapper.cs
- PageEventArgs.cs
- TTSEngineProxy.cs
- ConnectionStringsExpressionEditor.cs
- XmlQueryRuntime.cs
- WizardForm.cs
- ConfigurationStrings.cs
- XmlChildNodes.cs
- StrokeCollectionDefaultValueFactory.cs
- XpsFilter.cs
- SafeEventLogReadHandle.cs
- UrlAuthorizationModule.cs
- EventRouteFactory.cs
- xsdvalidator.cs
- ProxyGenerationError.cs
- SqlVersion.cs
- FixedLineResult.cs
- PersonalizationProviderHelper.cs
- SafeNativeMethods.cs
- CodeNamespace.cs
- FrugalMap.cs
- BoundsDrawingContextWalker.cs
- MenuItemStyle.cs
- StringExpressionSet.cs
- QilInvokeLateBound.cs