Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- SafeNativeHandle.cs
- MetabaseSettings.cs
- RoleManagerModule.cs
- PropertyGridEditorPart.cs
- MultiBinding.cs
- ThreadInterruptedException.cs
- Span.cs
- InvalidChannelBindingException.cs
- Span.cs
- CaseCqlBlock.cs
- HttpTransportBindingElement.cs
- DbDataReader.cs
- HtmlInputCheckBox.cs
- FlowDocumentReader.cs
- ManipulationBoundaryFeedbackEventArgs.cs
- InteropTrackingRecord.cs
- SystemUnicastIPAddressInformation.cs
- JsonSerializer.cs
- PolyQuadraticBezierSegment.cs
- DataListItemEventArgs.cs
- DataServiceQueryException.cs
- RouteParameter.cs
- GridViewRowEventArgs.cs
- EntityDataSourceWizardForm.cs
- KnownBoxes.cs
- DeploymentSection.cs
- XpsFixedPageReaderWriter.cs
- DbDataRecord.cs
- TableLayoutSettingsTypeConverter.cs
- Size.cs
- MouseGesture.cs
- ParenthesizePropertyNameAttribute.cs
- ContractReference.cs
- MergeFailedEvent.cs
- RotateTransform3D.cs
- Evaluator.cs
- ReachPageContentCollectionSerializerAsync.cs
- FileDialogCustomPlace.cs
- DBParameter.cs
- Mapping.cs
- LinkedResource.cs
- MapPathBasedVirtualPathProvider.cs
- TextServicesHost.cs
- SystemFonts.cs
- WindowsTooltip.cs
- EtwProvider.cs
- HttpPostedFile.cs
- Types.cs
- SettingsPropertyValue.cs
- DbMetaDataFactory.cs
- RightsManagementProvider.cs
- IntSecurity.cs
- WindowCollection.cs
- CharUnicodeInfo.cs
- PropertiesTab.cs
- LineBreakRecord.cs
- XmlSchemaComplexContentExtension.cs
- CriticalFinalizerObject.cs
- SslStream.cs
- FileStream.cs
- PersonalizationProviderHelper.cs
- EventEntry.cs
- NameGenerator.cs
- ViewManager.cs
- IncrementalHitTester.cs
- RankException.cs
- LayoutManager.cs
- OleDbRowUpdatedEvent.cs
- UnlockCardRequest.cs
- StringAnimationUsingKeyFrames.cs
- SystemKeyConverter.cs
- ImageListUtils.cs
- PeerTransportListenAddressValidatorAttribute.cs
- MaskedTextProvider.cs
- RadioButton.cs
- GeneralTransform2DTo3DTo2D.cs
- GlyphsSerializer.cs
- WebDisplayNameAttribute.cs
- Vector3DCollectionConverter.cs
- DataGridViewDataErrorEventArgs.cs
- WindowsPrincipal.cs
- EmptyEnumerator.cs
- UriWriter.cs
- ResourceDictionary.cs
- DeferredElementTreeState.cs
- FormClosedEvent.cs
- RelationalExpressions.cs
- FlowDocumentView.cs
- Registry.cs
- XPathSelfQuery.cs
- DataFieldConverter.cs
- NameTable.cs
- DateTimeFormatInfoScanner.cs
- EnumConverter.cs
- Rotation3DAnimation.cs
- QuadraticBezierSegment.cs
- BindingList.cs
- figurelengthconverter.cs
- CommandManager.cs
- DateTimeOffsetConverter.cs