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
- ServiceModelExtensionCollectionElement.cs
- EqualityComparer.cs
- Pair.cs
- SqlCacheDependencyDatabaseCollection.cs
- SqlRemoveConstantOrderBy.cs
- QilPatternFactory.cs
- Assembly.cs
- CodeCommentStatement.cs
- XmlDocumentType.cs
- OleDbEnumerator.cs
- OdbcUtils.cs
- MultiPageTextView.cs
- ScriptModule.cs
- CellQuery.cs
- DesignerDataSchemaClass.cs
- TextServicesLoader.cs
- ConsumerConnectionPoint.cs
- TypeCacheManager.cs
- ColorAnimation.cs
- ConnectionInterfaceCollection.cs
- DataContractSerializerOperationGenerator.cs
- NamespaceDecl.cs
- DataGridItemCollection.cs
- MatchNoneMessageFilter.cs
- Transform.cs
- CursorConverter.cs
- AggregationMinMaxHelpers.cs
- NonClientArea.cs
- Adorner.cs
- Grid.cs
- RightsController.cs
- Classification.cs
- EditorAttribute.cs
- XPathExpr.cs
- SoapCommonClasses.cs
- InnerItemCollectionView.cs
- Stackframe.cs
- PhysicalFontFamily.cs
- KeyGestureConverter.cs
- DataTablePropertyDescriptor.cs
- WindowsComboBox.cs
- MsmqIntegrationElement.cs
- DesigntimeLicenseContext.cs
- MaterialCollection.cs
- DrawingAttributesDefaultValueFactory.cs
- RemotingServices.cs
- TextEditorCharacters.cs
- WsiProfilesElement.cs
- TypeToArgumentTypeConverter.cs
- HttpCapabilitiesSectionHandler.cs
- CultureInfo.cs
- TreeNodeCollection.cs
- TableStyle.cs
- SoapAttributeAttribute.cs
- PersonalizableTypeEntry.cs
- SqlReferenceCollection.cs
- StringWriter.cs
- GeometryValueSerializer.cs
- Int64Converter.cs
- UserControl.cs
- BufferedStream.cs
- ScriptBehaviorDescriptor.cs
- CaseInsensitiveComparer.cs
- EntityDataSourceState.cs
- OuterGlowBitmapEffect.cs
- Delegate.cs
- WorkflowPersistenceService.cs
- UserControlBuildProvider.cs
- SiteMembershipCondition.cs
- EventData.cs
- ExtensibleClassFactory.cs
- EventWaitHandle.cs
- ToolBarTray.cs
- ReferenceConverter.cs
- SortExpressionBuilder.cs
- ClaimComparer.cs
- Unit.cs
- _HTTPDateParse.cs
- TransformValueSerializer.cs
- HttpResponse.cs
- AttachedPropertyMethodSelector.cs
- SystemUdpStatistics.cs
- Stylesheet.cs
- ProfileProvider.cs
- SystemDropShadowChrome.cs
- ColumnResizeAdorner.cs
- WebPartsSection.cs
- WithStatement.cs
- RijndaelManaged.cs
- HtmlPanelAdapter.cs
- _ConnectStream.cs
- SecureConversationSecurityTokenParameters.cs
- CodeLabeledStatement.cs
- MessageLoggingElement.cs
- InstanceDataCollectionCollection.cs
- PropertyPathWorker.cs
- ListChunk.cs
- DataServiceExpressionVisitor.cs
- TextBox.cs
- BamlRecordHelper.cs