Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / EventRouteFactory.cs / 1305600 / EventRouteFactory.cs
using System; using System.Windows; using MS.Utility; namespace System.Windows { ////// Creates and recycles instance of EventRoute /// internal static class EventRouteFactory { #region Operations ////// Fetch a recycled object if available /// else create a new instance /// internal static EventRoute FetchObject(RoutedEvent routedEvent) { EventRoute eventRoute = Pop(); if (eventRoute == null) { eventRoute = new EventRoute(routedEvent); } else { eventRoute.RoutedEvent = routedEvent; } return eventRoute; } ////// Recycle the given instance of EventRoute /// internal static void RecycleObject(EventRoute eventRoute) { // Cleanup all refernces held eventRoute.Clear(); // Push instance on to the stack Push(eventRoute); } #endregion Operations #region HelperMethods ////// Push the given instance of EventRoute on to the stack /// private static void Push(EventRoute eventRoute) { lock (_synchronized) { // In a normal scenario it is extremely rare to // require more than 2 EventRoutes at the same time if (_eventRouteStack == null) { _eventRouteStack = new EventRoute[2]; _stackTop = 0; } if (_stackTop < 2) { _eventRouteStack[_stackTop++] = eventRoute; } } } ////// Pop off the last instance of EventRoute in the stack /// private static EventRoute Pop() { lock (_synchronized) { if (_stackTop > 0) { EventRoute eventRoute = _eventRouteStack[--_stackTop]; _eventRouteStack[_stackTop] = null; return eventRoute; } } return null; } #endregion HelperMethods #region Data private static EventRoute[] _eventRouteStack; private static int _stackTop; private static object _synchronized = new object(); #endregion Data } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TypeSystemHelpers.cs
- VScrollBar.cs
- Asn1IntegerConverter.cs
- CurrentChangingEventArgs.cs
- __Error.cs
- KeyPressEvent.cs
- BindableAttribute.cs
- ColorPalette.cs
- Parser.cs
- PageContent.cs
- Metadata.cs
- PersonalizationProvider.cs
- EventRoute.cs
- ParseChildrenAsPropertiesAttribute.cs
- AuthenticationModuleElement.cs
- DbDataReader.cs
- FileChangesMonitor.cs
- MonthChangedEventArgs.cs
- BindingCompleteEventArgs.cs
- TypeResolvingOptions.cs
- NullableLongAverageAggregationOperator.cs
- ConfigurationConverterBase.cs
- XamlNamespaceHelper.cs
- LongValidator.cs
- KnownIds.cs
- EtwProvider.cs
- DataTablePropertyDescriptor.cs
- Rule.cs
- StdValidatorsAndConverters.cs
- PropertyItemInternal.cs
- InstanceKeyCollisionException.cs
- ImageButton.cs
- MetricEntry.cs
- IPHostEntry.cs
- SecurityDocument.cs
- TypeResolver.cs
- XPathNodeList.cs
- MimeMapping.cs
- StateChangeEvent.cs
- HyperLinkField.cs
- HuffModule.cs
- XmlSchemaGroupRef.cs
- TakeQueryOptionExpression.cs
- TableRowGroup.cs
- PropertyKey.cs
- ScriptResourceHandler.cs
- Variant.cs
- XmlTextReaderImpl.cs
- TdsParserSafeHandles.cs
- ViewSimplifier.cs
- UriParserTemplates.cs
- ColumnReorderedEventArgs.cs
- InputQueueChannel.cs
- ActivityBindForm.cs
- BitmapEffectGroup.cs
- CacheForPrimitiveTypes.cs
- WindowsListViewItemCheckBox.cs
- DataBindingList.cs
- ApplicationBuildProvider.cs
- Cursors.cs
- OperationFormatUse.cs
- PenThreadWorker.cs
- DbConnectionPoolGroup.cs
- BindingWorker.cs
- shaper.cs
- Thumb.cs
- BitmapMetadata.cs
- ComplusEndpointConfigContainer.cs
- ZipIOEndOfCentralDirectoryBlock.cs
- UnsafeNativeMethods.cs
- GroupBox.cs
- IncrementalCompileAnalyzer.cs
- jithelpers.cs
- SqlCacheDependencySection.cs
- Wildcard.cs
- DataRelationPropertyDescriptor.cs
- DocumentViewerAutomationPeer.cs
- ToolStripItemCollection.cs
- ApplicationSettingsBase.cs
- TemplatedMailWebEventProvider.cs
- ContentWrapperAttribute.cs
- ObjectDataProvider.cs
- ActivityBindForm.Designer.cs
- FontDriver.cs
- ResourceIDHelper.cs
- OpCopier.cs
- SqlPersonalizationProvider.cs
- ConcurrentQueue.cs
- NamespaceMapping.cs
- ContainerFilterService.cs
- OletxCommittableTransaction.cs
- ByeMessageApril2005.cs
- EncryptRequest.cs
- Timer.cs
- WinFormsUtils.cs
- CompilationRelaxations.cs
- ByteRangeDownloader.cs
- Application.cs
- NameGenerator.cs
- DataMemberFieldEditor.cs