Code:
/ FX-1434 / FX-1434 / 1.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
- FormViewPageEventArgs.cs
- LayoutEditorPart.cs
- ResourceExpressionBuilder.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- XPathNodeIterator.cs
- CollectionExtensions.cs
- ObjectStateEntryDbDataRecord.cs
- AttachmentService.cs
- ToolConsole.cs
- BitmapCodecInfo.cs
- EdmItemCollection.cs
- PolicyLevel.cs
- SystemIPGlobalProperties.cs
- HybridDictionary.cs
- unsafeIndexingFilterStream.cs
- WindowsFormsSynchronizationContext.cs
- DispatcherExceptionEventArgs.cs
- DesignBindingConverter.cs
- TextFormatter.cs
- WCFModelStrings.Designer.cs
- ScriptDescriptor.cs
- IPAddressCollection.cs
- NameValueCollection.cs
- IOException.cs
- recordstatefactory.cs
- QilLoop.cs
- TcpSocketManager.cs
- ServicePointManagerElement.cs
- StorageMappingItemLoader.cs
- SqlParameterCollection.cs
- Constants.cs
- WebPartsPersonalizationAuthorization.cs
- TemplateBamlRecordReader.cs
- KerberosTokenFactoryCredential.cs
- DrawListViewItemEventArgs.cs
- BroadcastEventHelper.cs
- WorkflowInlining.cs
- PiiTraceSource.cs
- ListControlActionList.cs
- AutomationProperty.cs
- EventlogProvider.cs
- CoTaskMemHandle.cs
- TypeDescriptorFilterService.cs
- TreeNodeStyleCollection.cs
- RuntimeTransactionHandle.cs
- DataList.cs
- KnownIds.cs
- WorkflowQueueInfo.cs
- MembershipAdapter.cs
- OuterGlowBitmapEffect.cs
- AppDomainCompilerProxy.cs
- Drawing.cs
- ToolStripOverflowButton.cs
- FormsAuthenticationTicket.cs
- Fonts.cs
- TextEffectCollection.cs
- PrinterResolution.cs
- SessionEndingEventArgs.cs
- TreeViewEvent.cs
- ProviderUtil.cs
- TextParentUndoUnit.cs
- DiscoveryEndpointValidator.cs
- ContractBase.cs
- PanelStyle.cs
- NavigationEventArgs.cs
- DataGridrowEditEndingEventArgs.cs
- ConstNode.cs
- WebPartZoneDesigner.cs
- DBConcurrencyException.cs
- TargetConverter.cs
- GridLengthConverter.cs
- GZipDecoder.cs
- ELinqQueryState.cs
- XamlSerializerUtil.cs
- SelectionItemPattern.cs
- Internal.cs
- BindingElementCollection.cs
- FlowDocumentFormatter.cs
- XmlHelper.cs
- StylusButton.cs
- _NegotiateClient.cs
- sqlstateclientmanager.cs
- EntityConnection.cs
- DataGridColumnEventArgs.cs
- TextCharacters.cs
- WindowsScroll.cs
- XmlStreamNodeWriter.cs
- EvidenceTypeDescriptor.cs
- DeferredElementTreeState.cs
- SchemaCreator.cs
- GroupedContextMenuStrip.cs
- RenderTargetBitmap.cs
- DiscardableAttribute.cs
- WebPartDescription.cs
- ObjectRef.cs
- FontCacheUtil.cs
- WorkflowInstance.cs
- WebPartConnectionsCloseVerb.cs
- IxmlLineInfo.cs
- StandardRuntimeEnumValidatorAttribute.cs