Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ToolStripItemBehavior.cs
- JsonWriter.cs
- ContentPlaceHolder.cs
- FontDifferentiator.cs
- TraceData.cs
- PrintPreviewControl.cs
- Error.cs
- TypeUnloadedException.cs
- HwndSubclass.cs
- MULTI_QI.cs
- GAC.cs
- XmlNamedNodeMap.cs
- QilGeneratorEnv.cs
- StateBag.cs
- TypeDescriptionProvider.cs
- ProxyWebPartManager.cs
- LinkArea.cs
- PropertyBuilder.cs
- mda.cs
- PersianCalendar.cs
- MDIWindowDialog.cs
- SafeFileMapViewHandle.cs
- EpmContentDeSerializer.cs
- MultiView.cs
- InstanceDataCollection.cs
- DefaultMemberAttribute.cs
- ImageMap.cs
- ByteRangeDownloader.cs
- PersonalizablePropertyEntry.cs
- SecurityTokenException.cs
- UpdatePanelTrigger.cs
- SchemaTableOptionalColumn.cs
- WhitespaceRuleLookup.cs
- BlockCollection.cs
- CssClassPropertyAttribute.cs
- Privilege.cs
- RadialGradientBrush.cs
- KeyFrames.cs
- Metafile.cs
- ButtonChrome.cs
- ZipPackagePart.cs
- TextEditorCopyPaste.cs
- ContextQuery.cs
- TypeReference.cs
- CompilerLocalReference.cs
- IdentityElement.cs
- CqlIdentifiers.cs
- InvalidEnumArgumentException.cs
- Stylesheet.cs
- EdmMember.cs
- DateBoldEvent.cs
- DBCommand.cs
- ExpressionVisitor.cs
- ScrollEvent.cs
- IndependentlyAnimatedPropertyMetadata.cs
- OperationDescription.cs
- XmlUnspecifiedAttribute.cs
- QueryInterceptorAttribute.cs
- DataGridViewBindingCompleteEventArgs.cs
- PriorityItem.cs
- DragDrop.cs
- UIPermission.cs
- DesigntimeLicenseContextSerializer.cs
- BamlLocalizabilityResolver.cs
- Attributes.cs
- HttpHandlerActionCollection.cs
- GeometryHitTestResult.cs
- CryptoProvider.cs
- CustomAssemblyResolver.cs
- ArraySet.cs
- DataGridLinkButton.cs
- HtmlShimManager.cs
- SocketAddress.cs
- DesignerLinkAdapter.cs
- PerformanceCounterPermission.cs
- WebScriptEnablingBehavior.cs
- ServicePoint.cs
- XmlElementCollection.cs
- IgnoreSection.cs
- CodeTypeDeclaration.cs
- arclist.cs
- TileModeValidation.cs
- SecurityTokenInclusionMode.cs
- MessageQueueEnumerator.cs
- StorageEndPropertyMapping.cs
- FilteredXmlReader.cs
- DocumentManager.cs
- TextEffect.cs
- XPathSelfQuery.cs
- ProcessStartInfo.cs
- GridViewRowEventArgs.cs
- GroupDescription.cs
- ToolBarPanel.cs
- IPGlobalProperties.cs
- NativeActivityMetadata.cs
- CodeDelegateCreateExpression.cs
- PermissionSet.cs
- ImageList.cs
- ReservationNotFoundException.cs
- SafeNativeMethodsMilCoreApi.cs