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
- TextServicesLoader.cs
- StylusButtonEventArgs.cs
- ItemAutomationPeer.cs
- LinkLabelLinkClickedEvent.cs
- OleDbConnectionFactory.cs
- UnauthorizedWebPart.cs
- WebMessageEncodingBindingElement.cs
- BeginEvent.cs
- FormatPage.cs
- OrderedDictionary.cs
- DataTableCollection.cs
- TypeSystem.cs
- ChildTable.cs
- EntityRecordInfo.cs
- DisposableCollectionWrapper.cs
- keycontainerpermission.cs
- ElementsClipboardData.cs
- MemberAccessException.cs
- DbParameterCollection.cs
- UshortList2.cs
- SystemIPInterfaceStatistics.cs
- UpdateException.cs
- GridViewRow.cs
- GridViewRowPresenter.cs
- OdbcEnvironmentHandle.cs
- AccessViolationException.cs
- Annotation.cs
- DirectoryNotFoundException.cs
- XsdCachingReader.cs
- AssemblyGen.cs
- DispatcherOperation.cs
- XhtmlBasicLiteralTextAdapter.cs
- Convert.cs
- PathData.cs
- RecognizerBase.cs
- CroppedBitmap.cs
- NonSerializedAttribute.cs
- ForwardPositionQuery.cs
- IisTraceListener.cs
- ResourceAttributes.cs
- DbUpdateCommandTree.cs
- Int64Animation.cs
- CompiledXpathExpr.cs
- View.cs
- EncodingDataItem.cs
- Debugger.cs
- KeyValueConfigurationElement.cs
- ServiceModelEnhancedConfigurationElementCollection.cs
- AliasExpr.cs
- ArraySortHelper.cs
- RunClient.cs
- IisTraceListener.cs
- ThemeDirectoryCompiler.cs
- PrimitiveXmlSerializers.cs
- LayoutExceptionEventArgs.cs
- UrlAuthFailedErrorFormatter.cs
- DoubleSumAggregationOperator.cs
- XmlWellformedWriter.cs
- StrokeSerializer.cs
- Memoizer.cs
- VirtualStackFrame.cs
- SHA512.cs
- counter.cs
- Repeater.cs
- XmlSerializationGeneratedCode.cs
- Soap.cs
- StrokeNode.cs
- WorkflowStateRollbackService.cs
- DataGridItemCollection.cs
- ServicesUtilities.cs
- EncryptionUtility.cs
- Guid.cs
- MouseOverProperty.cs
- LayoutEditorPart.cs
- InvokeMemberBinder.cs
- VariableAction.cs
- ColorTransform.cs
- Queue.cs
- NotifyParentPropertyAttribute.cs
- PropertyInformationCollection.cs
- XslAst.cs
- FontDifferentiator.cs
- QilPatternFactory.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- RenderDataDrawingContext.cs
- EventHandlersStore.cs
- FSWPathEditor.cs
- ColorAnimationBase.cs
- SimpleWebHandlerParser.cs
- ColorTranslator.cs
- EntityObject.cs
- HitTestFilterBehavior.cs
- IIS7WorkerRequest.cs
- XXXInfos.cs
- ValidationService.cs
- PageThemeBuildProvider.cs
- FontWeightConverter.cs
- RowsCopiedEventArgs.cs
- HttpStaticObjectsCollectionBase.cs
- MetadataArtifactLoaderFile.cs