Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Core / CSharp / System / Windows / Media / DrawingCollection.cs / 1 / DrawingCollection.cs
//---------------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // Description: This file contains non-generated DrawingCollection // methods. // // History: // // 2005/03/18 : timothyc - Created it. // //--------------------------------------------------------------------------- using System.Collections; using System.Collections.Generic; using System.Windows.Media.Animation; using System.Windows.Markup; namespace System.Windows.Media { ////// Collection of Drawing objects /// public sealed partial class DrawingCollection : Animatable, IList, IList{ /// /// Appends the entire input DrawingCollection, while only firing a single set of /// public events. If an exception is thrown from the public events, the /// Append operation is rolled back. /// internal void TransactionalAppend(DrawingCollection collectionToAppend) { // Use appendCount to avoid inconsistencies & runaway loops when // this == collectionToAppend, and to ensure collectionToAppend.Count // is only evaluated once. int appendCount = collectionToAppend.Count; // First, append the collection for(int i = 0; i < appendCount; i++) { AddWithoutFiringPublicEvents(collectionToAppend.Internal_GetItem(i)); } // Fire the public Changed event after all the elements have been added. // // If an exception is thrown, then the Append operation is rolled-back without // firing additional events. try { FireChanged(); } catch (Exception) { // Compute the number of elements that existed before the append int beforeAppendCount = Count - appendCount; // Remove the appended elements in reverse order without firing Changed events. for ( int i = Count - 1; // Start at the current last index i >= beforeAppendCount; // Until the previous last index i-- // Move to the preceding index ) { RemoveAtWithoutFiringPublicEvents(i); } // Avoid firing WritePostscript events (e.g., OnChanged) after rolling-back // the current operation. // // This ensures that only a single set of events is fired for both exceptional & // typical cases, and it's likely that firing events would cause another exception. throw; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // Description: This file contains non-generated DrawingCollection // methods. // // History: // // 2005/03/18 : timothyc - Created it. // //--------------------------------------------------------------------------- using System.Collections; using System.Collections.Generic; using System.Windows.Media.Animation; using System.Windows.Markup; namespace System.Windows.Media { ////// Collection of Drawing objects /// public sealed partial class DrawingCollection : Animatable, IList, IList{ /// /// Appends the entire input DrawingCollection, while only firing a single set of /// public events. If an exception is thrown from the public events, the /// Append operation is rolled back. /// internal void TransactionalAppend(DrawingCollection collectionToAppend) { // Use appendCount to avoid inconsistencies & runaway loops when // this == collectionToAppend, and to ensure collectionToAppend.Count // is only evaluated once. int appendCount = collectionToAppend.Count; // First, append the collection for(int i = 0; i < appendCount; i++) { AddWithoutFiringPublicEvents(collectionToAppend.Internal_GetItem(i)); } // Fire the public Changed event after all the elements have been added. // // If an exception is thrown, then the Append operation is rolled-back without // firing additional events. try { FireChanged(); } catch (Exception) { // Compute the number of elements that existed before the append int beforeAppendCount = Count - appendCount; // Remove the appended elements in reverse order without firing Changed events. for ( int i = Count - 1; // Start at the current last index i >= beforeAppendCount; // Until the previous last index i-- // Move to the preceding index ) { RemoveAtWithoutFiringPublicEvents(i); } // Avoid firing WritePostscript events (e.g., OnChanged) after rolling-back // the current operation. // // This ensures that only a single set of events is fired for both exceptional & // typical cases, and it's likely that firing events would cause another exception. throw; } } } } // 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
- SafeFileMapViewHandle.cs
- RequestCachePolicyConverter.cs
- MimeTextImporter.cs
- StreamInfo.cs
- TableCellCollection.cs
- Error.cs
- PrinterSettings.cs
- WebPartDisplayModeEventArgs.cs
- CLSCompliantAttribute.cs
- PiiTraceSource.cs
- AsymmetricKeyExchangeDeformatter.cs
- ColumnResizeAdorner.cs
- DynamicPropertyHolder.cs
- NamedPipeAppDomainProtocolHandler.cs
- ChannelDispatcher.cs
- SqlHelper.cs
- ListCollectionView.cs
- ProjectionCamera.cs
- ProviderManager.cs
- AssemblyAssociatedContentFileAttribute.cs
- QuaternionAnimationUsingKeyFrames.cs
- RightsManagementEncryptionTransform.cs
- PassportAuthenticationEventArgs.cs
- IntSecurity.cs
- SiteMapPath.cs
- PropertyTabAttribute.cs
- HebrewNumber.cs
- TextRangeEditTables.cs
- StateMachine.cs
- ClassHandlersStore.cs
- StoreItemCollection.Loader.cs
- AbstractDataSvcMapFileLoader.cs
- ReaderWriterLockWrapper.cs
- CommandLibraryHelper.cs
- QueryLifecycle.cs
- AssemblyResourceLoader.cs
- CounterSetInstance.cs
- RemoteWebConfigurationHostStream.cs
- AppSecurityManager.cs
- RowBinding.cs
- WebPartMenuStyle.cs
- StoreAnnotationsMap.cs
- _SSPIWrapper.cs
- AutoCompleteStringCollection.cs
- ComponentCollection.cs
- ResourceCategoryAttribute.cs
- DataRowCollection.cs
- DataViewListener.cs
- StateChangeEvent.cs
- Encoder.cs
- NativeMethods.cs
- DataGridDesigner.cs
- XmlArrayItemAttributes.cs
- SqlFileStream.cs
- EntityDataSourceQueryBuilder.cs
- GenericUriParser.cs
- SynchronizedKeyedCollection.cs
- CheckBoxRenderer.cs
- CompleteWizardStep.cs
- WebPartVerb.cs
- StartUpEventArgs.cs
- TransactedBatchContext.cs
- WebPartTransformer.cs
- ConfigurationProviderException.cs
- TTSVoice.cs
- filewebresponse.cs
- GlyphsSerializer.cs
- HostedHttpContext.cs
- DesignTimeVisibleAttribute.cs
- PasswordDeriveBytes.cs
- assertwrapper.cs
- PolyLineSegment.cs
- GridViewSelectEventArgs.cs
- CodeTryCatchFinallyStatement.cs
- ActiveXSite.cs
- BufferedStream.cs
- AlgoModule.cs
- ReliableMessagingVersionConverter.cs
- EventListener.cs
- TextTreeFixupNode.cs
- SelectionEditor.cs
- MemoryMappedView.cs
- StandardCommandToolStripMenuItem.cs
- CompatibleIComparer.cs
- SettingsAttributeDictionary.cs
- ProcessModelSection.cs
- WindowsSlider.cs
- AutomationAttributeInfo.cs
- unsafeIndexingFilterStream.cs
- PointAnimationUsingPath.cs
- MatchAttribute.cs
- SmtpDateTime.cs
- _RequestCacheProtocol.cs
- DefaultValueConverter.cs
- EntityDescriptor.cs
- ToolStripDropDownMenu.cs
- FastPropertyAccessor.cs
- OrderedHashRepartitionEnumerator.cs
- DocumentReferenceCollection.cs
- CompositeTypefaceMetrics.cs