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
- ProxySimple.cs
- BoolLiteral.cs
- GPPOINTF.cs
- SHA256.cs
- Transform.cs
- BinHexEncoding.cs
- SystemWebExtensionsSectionGroup.cs
- Image.cs
- ModulesEntry.cs
- DriveNotFoundException.cs
- ClientOptions.cs
- ValueSerializer.cs
- URIFormatException.cs
- HttpWriter.cs
- SmiXetterAccessMap.cs
- ResponseBodyWriter.cs
- AnimatedTypeHelpers.cs
- GestureRecognizer.cs
- PropertyEntry.cs
- UriSectionReader.cs
- SQLRoleProvider.cs
- DataSourceSerializationException.cs
- Image.cs
- XPathDocumentNavigator.cs
- TypeHelper.cs
- FileVersionInfo.cs
- GenericTextProperties.cs
- FormClosedEvent.cs
- SystemResources.cs
- ExceptionUtil.cs
- SystemUdpStatistics.cs
- DataGridViewSelectedColumnCollection.cs
- EncoderNLS.cs
- PageParserFilter.cs
- AQNBuilder.cs
- WebPartEditVerb.cs
- SequentialOutput.cs
- _FixedSizeReader.cs
- RuntimeResourceSet.cs
- GeneralTransform.cs
- SafeEventHandle.cs
- HwndAppCommandInputProvider.cs
- SQLDoubleStorage.cs
- AdapterUtil.cs
- SByteConverter.cs
- XpsS0ValidatingLoader.cs
- GC.cs
- NetworkAddressChange.cs
- ArrayItemReference.cs
- AccessText.cs
- TraceSection.cs
- XmlSchemaAll.cs
- Control.cs
- DecoderExceptionFallback.cs
- IERequestCache.cs
- RTLAwareMessageBox.cs
- DebuggerAttributes.cs
- Empty.cs
- MessageFilter.cs
- XmlAnyAttributeAttribute.cs
- MarginsConverter.cs
- ButtonBaseDesigner.cs
- HttpTransportSecurityElement.cs
- SafeHandles.cs
- WorkflowPersistenceService.cs
- SetterBase.cs
- AutomationEvent.cs
- TypeDescriptorFilterService.cs
- ProxyWebPart.cs
- NullableDoubleSumAggregationOperator.cs
- SrgsDocument.cs
- SchemaImporter.cs
- DynamicActivityXamlReader.cs
- PageBreakRecord.cs
- Pair.cs
- EdmScalarPropertyAttribute.cs
- ParseHttpDate.cs
- WebPart.cs
- DirectoryNotFoundException.cs
- BufferedStream.cs
- XmlName.cs
- EnvironmentPermission.cs
- TypeBuilder.cs
- TrustLevel.cs
- MediaCommands.cs
- DockPanel.cs
- SmtpSection.cs
- AVElementHelper.cs
- ContractCodeDomInfo.cs
- PageAdapter.cs
- WsiProfilesElementCollection.cs
- InvokePattern.cs
- CodeVariableDeclarationStatement.cs
- DataTableReaderListener.cs
- PageStatePersister.cs
- NamespaceCollection.cs
- ParseChildrenAsPropertiesAttribute.cs
- PersonalizationState.cs
- VectorCollection.cs
- TargetParameterCountException.cs