Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- WorkflowInstance.cs
- ContractCodeDomInfo.cs
- EventToken.cs
- DataContext.cs
- MediaSystem.cs
- MatrixTransform3D.cs
- XamlWriter.cs
- WebPartEventArgs.cs
- IdentityReference.cs
- httpserverutility.cs
- GeneralTransform3D.cs
- Directory.cs
- ContentControl.cs
- DeclarativeExpressionConditionDeclaration.cs
- SocketPermission.cs
- Identifier.cs
- DataGridViewAutoSizeModeEventArgs.cs
- ListenerAdapterBase.cs
- FileLevelControlBuilderAttribute.cs
- RouteCollection.cs
- sqlser.cs
- ListBox.cs
- StyleCollection.cs
- SapiInterop.cs
- SqlStream.cs
- HtmlTitle.cs
- ValidationContext.cs
- WebScriptServiceHostFactory.cs
- SBCSCodePageEncoding.cs
- CodeArrayCreateExpression.cs
- HostingEnvironmentSection.cs
- SmiEventSink.cs
- StringStorage.cs
- MimeBasePart.cs
- ColorContextHelper.cs
- LayoutTable.cs
- BuildProviderUtils.cs
- Bookmark.cs
- ButtonFieldBase.cs
- UpdateEventArgs.cs
- XsltException.cs
- AmbientValueAttribute.cs
- BinaryParser.cs
- XmlArrayAttribute.cs
- BamlBinaryWriter.cs
- DataBoundControl.cs
- HelpKeywordAttribute.cs
- Constants.cs
- OptimizedTemplateContentHelper.cs
- WebPartDisplayModeCollection.cs
- WrappingXamlSchemaContext.cs
- PropertyTab.cs
- XmlSortKey.cs
- HtmlTitle.cs
- IfAction.cs
- Comparer.cs
- Registry.cs
- OrderedEnumerableRowCollection.cs
- PathFigureCollectionConverter.cs
- ExceptionUtility.cs
- ArrayConverter.cs
- InputLangChangeEvent.cs
- Variant.cs
- ImageButton.cs
- DefaultCommandExtensionCallback.cs
- ClientUtils.cs
- ConnectivityStatus.cs
- SearchForVirtualItemEventArgs.cs
- Msec.cs
- StorageComplexTypeMapping.cs
- OLEDB_Util.cs
- Cloud.cs
- MetafileEditor.cs
- ISAPIWorkerRequest.cs
- PersonalizableTypeEntry.cs
- dsa.cs
- DataGridViewColumnCollection.cs
- AllowedAudienceUriElementCollection.cs
- NativeMethods.cs
- ListViewSortEventArgs.cs
- InternalDispatchObject.cs
- RequestQueryProcessor.cs
- DataSysAttribute.cs
- UserUseLicenseDictionaryLoader.cs
- PathSegment.cs
- WarningException.cs
- InstanceLockedException.cs
- SocketPermission.cs
- StringSorter.cs
- GZipDecoder.cs
- TraceContextEventArgs.cs
- InheritanceContextChangedEventManager.cs
- WS2007FederationHttpBinding.cs
- CodeTypeReferenceExpression.cs
- WorkflowTraceTransfer.cs
- OleDbTransaction.cs
- SqlBuilder.cs
- XPathDocumentBuilder.cs
- SynchronizationContext.cs
- _IPv4Address.cs