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
- StateElement.cs
- RegexFCD.cs
- PageFunction.cs
- SecureUICommand.cs
- XMLSchema.cs
- DrawingImage.cs
- SqlDataSourceSelectingEventArgs.cs
- InsufficientMemoryException.cs
- CaseStatementSlot.cs
- CodeTypeMemberCollection.cs
- AuthorizationRuleCollection.cs
- NGCSerializationManagerAsync.cs
- UniqueEventHelper.cs
- RegexFCD.cs
- KoreanLunisolarCalendar.cs
- StylusPointPropertyUnit.cs
- TrailingSpaceComparer.cs
- InplaceBitmapMetadataWriter.cs
- ContentElement.cs
- DocumentOutline.cs
- ColumnResizeAdorner.cs
- Attributes.cs
- DataGridViewTextBoxEditingControl.cs
- TemplateEditingVerb.cs
- PackageFilter.cs
- TabletDevice.cs
- StyleSelector.cs
- ContractUtils.cs
- GridViewDeleteEventArgs.cs
- SystemSounds.cs
- pingexception.cs
- ImageDrawing.cs
- _UriTypeConverter.cs
- ReservationCollection.cs
- DivideByZeroException.cs
- ResourceType.cs
- SessionStateContainer.cs
- AttributeTableBuilder.cs
- ZipIOExtraFieldElement.cs
- MouseOverProperty.cs
- FixedDocument.cs
- TemplateKey.cs
- ArgumentOutOfRangeException.cs
- FileEnumerator.cs
- StaticSiteMapProvider.cs
- XPathChildIterator.cs
- SqlRecordBuffer.cs
- ColumnHeaderConverter.cs
- DoubleAnimationUsingKeyFrames.cs
- HighlightVisual.cs
- SoapObjectInfo.cs
- WmlListAdapter.cs
- CodeCommentStatement.cs
- URLAttribute.cs
- StringStorage.cs
- Variant.cs
- UserControlAutomationPeer.cs
- DataFormats.cs
- BitmapMetadata.cs
- Cursor.cs
- ExpandCollapseProviderWrapper.cs
- CatchBlock.cs
- StylusPointProperty.cs
- LambdaExpression.cs
- CapabilitiesRule.cs
- PointHitTestResult.cs
- CharacterMetrics.cs
- SoapAttributeOverrides.cs
- ClientScriptManager.cs
- ServiceOperationViewControl.cs
- TablePattern.cs
- Util.cs
- MailDefinition.cs
- HtmlEncodedRawTextWriter.cs
- XmlParser.cs
- AttributeQuery.cs
- CustomPopupPlacement.cs
- DLinqTableProvider.cs
- EncryptedKeyIdentifierClause.cs
- CellRelation.cs
- ObjectStorage.cs
- Soap.cs
- validationstate.cs
- ControlDesigner.cs
- NativeMethods.cs
- XmlAnyElementAttribute.cs
- ContentWrapperAttribute.cs
- InstalledFontCollection.cs
- DbMetaDataFactory.cs
- RoleManagerModule.cs
- FunctionDefinition.cs
- DecoderFallbackWithFailureFlag.cs
- ThemeDictionaryExtension.cs
- EntityCommandExecutionException.cs
- HyperLink.cs
- DoubleAnimationBase.cs
- XhtmlConformanceSection.cs
- PolicyManager.cs
- AssemblyNameProxy.cs
- HtmlTableRowCollection.cs