Code:
/ 4.0 / 4.0 / 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. 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
- HuffModule.cs
- SqlFacetAttribute.cs
- XPathNodeList.cs
- XamlBrushSerializer.cs
- PageTheme.cs
- URLString.cs
- CfgArc.cs
- InvalidFilterCriteriaException.cs
- DeviceSpecificChoiceCollection.cs
- ThrowHelper.cs
- XmlDictionaryString.cs
- ImageMetadata.cs
- CollectionViewGroupInternal.cs
- DaylightTime.cs
- BitmapScalingModeValidation.cs
- HttpBrowserCapabilitiesWrapper.cs
- AppSettingsExpressionBuilder.cs
- PaperSource.cs
- DesignDataSource.cs
- Effect.cs
- BaseAddressElementCollection.cs
- DrawListViewColumnHeaderEventArgs.cs
- Crc32.cs
- CodeStatementCollection.cs
- DateTimeConstantAttribute.cs
- SoapSchemaImporter.cs
- SByteStorage.cs
- Error.cs
- MenuAutomationPeer.cs
- SqlInternalConnection.cs
- OperandQuery.cs
- PolyBezierSegmentFigureLogic.cs
- SecondaryViewProvider.cs
- WindowsTreeView.cs
- CodePrimitiveExpression.cs
- Padding.cs
- TextElementEnumerator.cs
- CheckBox.cs
- DataBindingExpressionBuilder.cs
- EntityViewGenerationAttribute.cs
- PublisherIdentityPermission.cs
- ZipIORawDataFileBlock.cs
- TextFormatter.cs
- HttpResponseWrapper.cs
- QuadraticBezierSegment.cs
- XsltConvert.cs
- TableItemPattern.cs
- DeclarativeCatalogPart.cs
- DocumentApplicationJournalEntryEventArgs.cs
- DBSchemaTable.cs
- CorrelationService.cs
- WebPartEditorCancelVerb.cs
- ObjectNavigationPropertyMapping.cs
- IgnoreFlushAndCloseStream.cs
- BaseParagraph.cs
- TypedElement.cs
- SecUtil.cs
- BaseDataListActionList.cs
- ExtentCqlBlock.cs
- HashSet.cs
- TextPointerBase.cs
- TransportContext.cs
- DoubleLinkList.cs
- BaseConfigurationRecord.cs
- PreviewControlDesigner.cs
- XmlQueryStaticData.cs
- ListViewInsertionMark.cs
- EmptyQuery.cs
- TableLayoutPanel.cs
- SemanticBasicElement.cs
- ObjectDataProvider.cs
- WebPartMenu.cs
- DetailsViewPagerRow.cs
- DoubleCollection.cs
- FixedStringLookup.cs
- BindingExpressionBase.cs
- SystemBrushes.cs
- WhitespaceRule.cs
- PolyLineSegment.cs
- MultipartIdentifier.cs
- DecimalAnimationBase.cs
- CommandDesigner.cs
- BindingElement.cs
- GridView.cs
- Transform3D.cs
- ChangeConflicts.cs
- SendSecurityHeader.cs
- TypeDescriptor.cs
- SqlSupersetValidator.cs
- Point3D.cs
- BulletChrome.cs
- SQLDouble.cs
- CheckBoxList.cs
- ParallelLoopState.cs
- UnsafeNativeMethods.cs
- ConstrainedDataObject.cs
- DocumentPropertiesDialog.cs
- SelectionRangeConverter.cs
- mediaeventshelper.cs
- SystemIcons.cs