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
- TextElementCollection.cs
- CheckPair.cs
- BreakSafeBase.cs
- DateTimeUtil.cs
- BitmapDecoder.cs
- wgx_commands.cs
- InvalidateEvent.cs
- CodeDOMProvider.cs
- LineServicesCallbacks.cs
- PrePostDescendentsWalker.cs
- ProtocolReflector.cs
- DispatcherTimer.cs
- ToolZone.cs
- HttpListenerResponse.cs
- SqlClientMetaDataCollectionNames.cs
- ResourcesChangeInfo.cs
- XamlSerializerUtil.cs
- ToolboxCategoryItems.cs
- EntityParameter.cs
- ScriptResourceInfo.cs
- UIElement.cs
- OperationSelectorBehavior.cs
- CharEntityEncoderFallback.cs
- DiscoveryClientRequestChannel.cs
- shaperfactoryquerycachekey.cs
- EditBehavior.cs
- ConcurrentBag.cs
- PathTooLongException.cs
- ConsumerConnectionPoint.cs
- VariableAction.cs
- ElementNotEnabledException.cs
- KeyInstance.cs
- IRCollection.cs
- ProcessHostMapPath.cs
- DocumentPageView.cs
- SimpleHandlerFactory.cs
- Configuration.cs
- JobInputBins.cs
- bindurihelper.cs
- GenericIdentity.cs
- ProfileSection.cs
- EntityContainerEntitySet.cs
- ScriptModule.cs
- MaterialGroup.cs
- WebPartMenu.cs
- SecurityHelper.cs
- MemoryRecordBuffer.cs
- MsmqBindingElementBase.cs
- InputMethod.cs
- TextTreeUndo.cs
- Overlapped.cs
- XhtmlMobileTextWriter.cs
- AttributeUsageAttribute.cs
- Attributes.cs
- util.cs
- FocusWithinProperty.cs
- BezierSegment.cs
- UserNameServiceElement.cs
- HttpClientChannel.cs
- Label.cs
- FrugalMap.cs
- DocumentPageHost.cs
- ThreadExceptionEvent.cs
- MarshalDirectiveException.cs
- XmlSchemaSubstitutionGroup.cs
- XamlTypeMapperSchemaContext.cs
- DependentList.cs
- DecimalFormatter.cs
- SqlWorkflowPersistenceService.cs
- ElementsClipboardData.cs
- AutomationPropertyInfo.cs
- XmlSchemaCollection.cs
- StreamGeometryContext.cs
- Image.cs
- MdImport.cs
- ProviderCollection.cs
- Invariant.cs
- InfiniteTimeSpanConverter.cs
- ProbeDuplexCD1AsyncResult.cs
- DataGridViewComboBoxColumn.cs
- XmlLinkedNode.cs
- CookielessData.cs
- Container.cs
- XmlReaderSettings.cs
- BuildResult.cs
- MenuAdapter.cs
- InputMethodStateChangeEventArgs.cs
- ServiceNameCollection.cs
- SqlMethodAttribute.cs
- MediaContext.cs
- BinaryObjectReader.cs
- TextElementAutomationPeer.cs
- RemoteArgument.cs
- SqlUDTStorage.cs
- StreamedFramingRequestChannel.cs
- StorageBasedPackageProperties.cs
- DictionaryCustomTypeDescriptor.cs
- Sql8ConformanceChecker.cs
- TemplateBamlRecordReader.cs
- GridToolTip.cs