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
- WebPartTracker.cs
- MailFileEditor.cs
- TemplateControlParser.cs
- SafeRightsManagementHandle.cs
- DiscoveryDocument.cs
- ConnectionPoint.cs
- OleDbInfoMessageEvent.cs
- ExpressionPrefixAttribute.cs
- Single.cs
- WindowsScroll.cs
- DirectoryNotFoundException.cs
- TimeManager.cs
- _FtpControlStream.cs
- DrawingDrawingContext.cs
- DiscoveryDocumentSerializer.cs
- DeploymentSectionCache.cs
- ArrayWithOffset.cs
- ConnectionManagementSection.cs
- SettingsBase.cs
- SpeechAudioFormatInfo.cs
- OleDbTransaction.cs
- PartManifestEntry.cs
- NavigatorInvalidBodyAccessException.cs
- XmlSchemaAnnotated.cs
- TextEndOfLine.cs
- SymbolUsageManager.cs
- DataGridViewCellFormattingEventArgs.cs
- XmlSchemaCompilationSettings.cs
- SiteMapDataSource.cs
- PipelineModuleStepContainer.cs
- URLString.cs
- Classification.cs
- DataServiceClientException.cs
- DataObjectEventArgs.cs
- dataobject.cs
- FileSystemWatcher.cs
- SvcFileManager.cs
- DataGridItemCollection.cs
- ProfileEventArgs.cs
- DataMemberConverter.cs
- CodeBlockBuilder.cs
- RegexRunnerFactory.cs
- ResourceReader.cs
- KnownColorTable.cs
- WindowAutomationPeer.cs
- Object.cs
- CatalogZoneBase.cs
- RegistryPermission.cs
- PasswordTextNavigator.cs
- ResourceCategoryAttribute.cs
- TextDocumentView.cs
- Section.cs
- NavigationExpr.cs
- KeyPressEvent.cs
- FormsIdentity.cs
- InternalCache.cs
- TargetParameterCountException.cs
- X509PeerCertificateAuthenticationElement.cs
- XmlObjectSerializerWriteContextComplexJson.cs
- ReadOnlyHierarchicalDataSource.cs
- RemoteWebConfigurationHostStream.cs
- CacheForPrimitiveTypes.cs
- RegistryPermission.cs
- ConditionCollection.cs
- MemberListBinding.cs
- Rect.cs
- IPPacketInformation.cs
- PrinterSettings.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- LassoSelectionBehavior.cs
- Light.cs
- TextTreeRootNode.cs
- CommittableTransaction.cs
- EntityDataSourceConfigureObjectContext.cs
- ClientEventManager.cs
- DataGridCaption.cs
- validation.cs
- SeverityFilter.cs
- FindCriteria11.cs
- ToolStripCodeDomSerializer.cs
- ColumnHeader.cs
- RenderData.cs
- HashAlgorithm.cs
- SqlBooleanMismatchVisitor.cs
- Journaling.cs
- Function.cs
- MarkupProperty.cs
- UrlRoutingHandler.cs
- EventLogQuery.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- ImplicitInputBrush.cs
- ActivatableWorkflowsQueryResult.cs
- SystemTcpConnection.cs
- HtmlButton.cs
- ControlEvent.cs
- DataGridViewElement.cs
- SplitContainerDesigner.cs
- SettingsPropertyIsReadOnlyException.cs
- ClrPerspective.cs
- ApplicationId.cs