Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Core / CSharp / System / Windows / EventRouteFactory.cs / 1 / 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
- ProfileInfo.cs
- ViewDesigner.cs
- NameService.cs
- XPathItem.cs
- SchemaSetCompiler.cs
- WebPartDescription.cs
- RepeaterItemEventArgs.cs
- XmlDeclaration.cs
- AnnotationMap.cs
- X509Utils.cs
- PanelStyle.cs
- InfoCardTraceRecord.cs
- TextParagraph.cs
- NameValueSectionHandler.cs
- UserControl.cs
- RowTypePropertyElement.cs
- SemaphoreSecurity.cs
- SettingsPropertyWrongTypeException.cs
- DataAccessor.cs
- CodeStatementCollection.cs
- EventMappingSettings.cs
- BuildProviderAppliesToAttribute.cs
- NetworkInformationException.cs
- AssemblyNameProxy.cs
- UIPermission.cs
- GridViewRowEventArgs.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- UInt16.cs
- ReflectionPermission.cs
- MatrixIndependentAnimationStorage.cs
- GiveFeedbackEventArgs.cs
- LineGeometry.cs
- Base64Encoder.cs
- RootDesignerSerializerAttribute.cs
- CompilerScopeManager.cs
- SourceInterpreter.cs
- FilteredXmlReader.cs
- KnownTypeHelper.cs
- _ProxyRegBlob.cs
- ICspAsymmetricAlgorithm.cs
- StringFormat.cs
- MobileUITypeEditor.cs
- IssuedTokenServiceCredential.cs
- BaseTemplateBuildProvider.cs
- XmlImplementation.cs
- VisualTreeUtils.cs
- SortExpressionBuilder.cs
- FileSecurity.cs
- Char.cs
- UserControl.cs
- NumericExpr.cs
- ListViewEditEventArgs.cs
- TableCell.cs
- TypeConstant.cs
- RuntimeHelpers.cs
- AssemblyAttributesGoHere.cs
- PointLightBase.cs
- ErrorHandlerFaultInfo.cs
- XamlTreeBuilder.cs
- Registry.cs
- HashSet.cs
- ParserContext.cs
- ImageIndexEditor.cs
- XmlFormatReaderGenerator.cs
- SolidColorBrush.cs
- AdjustableArrowCap.cs
- FileDataSourceCache.cs
- CreateParams.cs
- QilReference.cs
- AutomationEventArgs.cs
- DispatcherTimer.cs
- BatchServiceHost.cs
- Set.cs
- CommonGetThemePartSize.cs
- DigestTraceRecordHelper.cs
- XamlFxTrace.cs
- RecordManager.cs
- GCHandleCookieTable.cs
- GlyphTypeface.cs
- DataSourceCache.cs
- WebPartConnectionsEventArgs.cs
- ProfessionalColorTable.cs
- DataGridColumnHeaderCollection.cs
- WSHttpBindingElement.cs
- DetailsViewCommandEventArgs.cs
- ComponentChangedEvent.cs
- PropertyChange.cs
- ClientConfigPaths.cs
- UniqueConstraint.cs
- QilFactory.cs
- BaseTemplateBuildProvider.cs
- VectorAnimation.cs
- ZipIOExtraFieldPaddingElement.cs
- BamlResourceSerializer.cs
- AlternateViewCollection.cs
- Blend.cs
- TheQuery.cs
- BasicHttpSecurityElement.cs
- AuthenticationService.cs
- QuaternionRotation3D.cs