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
- XXXOnTypeBuilderInstantiation.cs
- KnownBoxes.cs
- KeyToListMap.cs
- ZipIOExtraFieldZip64Element.cs
- DataGridViewAccessibleObject.cs
- ListBoxItem.cs
- ObjectTokenCategory.cs
- SequentialWorkflowRootDesigner.cs
- DataFormats.cs
- compensatingcollection.cs
- BitmapImage.cs
- WebInvokeAttribute.cs
- HatchBrush.cs
- FunctionQuery.cs
- SQLMembershipProvider.cs
- HtmlTernaryTree.cs
- BitmapEffectDrawing.cs
- SettingsProviderCollection.cs
- PtsHelper.cs
- IIS7WorkerRequest.cs
- HttpConfigurationContext.cs
- Rule.cs
- SQlBooleanStorage.cs
- StringWriter.cs
- TripleDES.cs
- RuntimeWrappedException.cs
- QilReplaceVisitor.cs
- SplitContainerDesigner.cs
- TextEndOfParagraph.cs
- AttributeEmitter.cs
- ValidationSummaryDesigner.cs
- Rules.cs
- UrlMappingCollection.cs
- DataBoundControlAdapter.cs
- NotifyParentPropertyAttribute.cs
- MailBnfHelper.cs
- Message.cs
- TimeSpanConverter.cs
- FixedSchema.cs
- Quad.cs
- CreatingCookieEventArgs.cs
- TypedDataSetSchemaImporterExtensionFx35.cs
- OutputCacheProfileCollection.cs
- HwndProxyElementProvider.cs
- DataTableCollection.cs
- PageParser.cs
- HttpException.cs
- IgnorePropertiesAttribute.cs
- Transform.cs
- NameValuePair.cs
- DataGridViewColumnDesigner.cs
- PKCS1MaskGenerationMethod.cs
- DnsCache.cs
- EditCommandColumn.cs
- Source.cs
- AutomationElementIdentifiers.cs
- LinqDataSourceView.cs
- BrushConverter.cs
- PowerModeChangedEventArgs.cs
- VisualCollection.cs
- RequiredAttributeAttribute.cs
- _AcceptOverlappedAsyncResult.cs
- IBuiltInEvidence.cs
- CharEnumerator.cs
- ProgressiveCrcCalculatingStream.cs
- OleDbTransaction.cs
- ContentPresenter.cs
- RemoteWebConfigurationHostStream.cs
- BaseAutoFormat.cs
- Util.cs
- WebBaseEventKeyComparer.cs
- SafeHandles.cs
- HostingMessageProperty.cs
- PagedDataSource.cs
- Point3DKeyFrameCollection.cs
- DifferencingCollection.cs
- EncodingTable.cs
- ThreadPoolTaskScheduler.cs
- QilLiteral.cs
- UntypedNullExpression.cs
- HandlerBase.cs
- Point.cs
- VariableAction.cs
- Variant.cs
- FrameworkContentElement.cs
- InvokeBase.cs
- AutomationPropertyInfo.cs
- Point4D.cs
- TransformerInfoCollection.cs
- SpecialNameAttribute.cs
- WebMessageBodyStyleHelper.cs
- Timer.cs
- GridItem.cs
- ChannelPoolSettings.cs
- SqlException.cs
- FrameworkElementFactoryMarkupObject.cs
- MemoryStream.cs
- ValidatingReaderNodeData.cs
- ThicknessKeyFrameCollection.cs
- BooleanFunctions.cs