Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Shared / MS / Internal / WeakReferenceEnumerator.cs / 1305600 / WeakReferenceEnumerator.cs
using System; using System.Collections; using System.Windows; #if WINDOWS_BASE using MS.Internal.WindowsBase; #elif PRESENTATION_CORE using MS.Internal.PresentationCore; #elif PRESENTATIONFRAMEWORK using MS.Internal.PresentationFramework; #elif DRT using MS.Internal.Drt; #else #error Attempt to use FriendAccessAllowedAttribute from an unknown assembly. using MS.Internal.YourAssemblyName; #endif // Disable pragma warnings to enable PREsharp pragmas #pragma warning disable 1634, 1691 namespace MS.Internal { ////// This allows callers to "foreach" through a WeakReferenceList. /// Each weakreference is checked for liveness and "current" /// actually returns a strong reference to the current element. /// ////// Due to the way enumerators function, this enumerator often /// holds a cached strong reference to the "Current" element. /// This should not be a problem unless the caller stops enumerating /// before the end of the list AND holds the enumerator alive forever. /// [FriendAccessAllowed] internal struct WeakReferenceListEnumerator : IEnumerator { public WeakReferenceListEnumerator( ArrayList List) { _i = 0; _List = List; _StrongReference = null; } object IEnumerator.Current { get{ return Current; } } public object Current { get { if( null == _StrongReference ) { #pragma warning suppress 6503 throw new System.InvalidOperationException(SR.Get(SRID.Enumerator_VerifyContext)); } return _StrongReference; } } public bool MoveNext() { object obj=null; while( _i < _List.Count ) { WeakReference weakRef = (WeakReference) _List[ _i++ ]; obj = weakRef.Target; if(null != obj) break; } _StrongReference = obj; return (null != obj); } public void Reset() { _i = 0; _StrongReference = null; } int _i; ArrayList _List; object _StrongReference; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System; using System.Collections; using System.Windows; #if WINDOWS_BASE using MS.Internal.WindowsBase; #elif PRESENTATION_CORE using MS.Internal.PresentationCore; #elif PRESENTATIONFRAMEWORK using MS.Internal.PresentationFramework; #elif DRT using MS.Internal.Drt; #else #error Attempt to use FriendAccessAllowedAttribute from an unknown assembly. using MS.Internal.YourAssemblyName; #endif // Disable pragma warnings to enable PREsharp pragmas #pragma warning disable 1634, 1691 namespace MS.Internal { ////// This allows callers to "foreach" through a WeakReferenceList. /// Each weakreference is checked for liveness and "current" /// actually returns a strong reference to the current element. /// ////// Due to the way enumerators function, this enumerator often /// holds a cached strong reference to the "Current" element. /// This should not be a problem unless the caller stops enumerating /// before the end of the list AND holds the enumerator alive forever. /// [FriendAccessAllowed] internal struct WeakReferenceListEnumerator : IEnumerator { public WeakReferenceListEnumerator( ArrayList List) { _i = 0; _List = List; _StrongReference = null; } object IEnumerator.Current { get{ return Current; } } public object Current { get { if( null == _StrongReference ) { #pragma warning suppress 6503 throw new System.InvalidOperationException(SR.Get(SRID.Enumerator_VerifyContext)); } return _StrongReference; } } public bool MoveNext() { object obj=null; while( _i < _List.Count ) { WeakReference weakRef = (WeakReference) _List[ _i++ ]; obj = weakRef.Target; if(null != obj) break; } _StrongReference = obj; return (null != obj); } public void Reset() { _i = 0; _StrongReference = null; } int _i; ArrayList _List; object _StrongReference; } } // 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
- odbcmetadatafactory.cs
- DesignTimeTemplateParser.cs
- PublisherMembershipCondition.cs
- TextServicesManager.cs
- CallbackCorrelationInitializer.cs
- IImplicitResourceProvider.cs
- TimelineGroup.cs
- InsufficientMemoryException.cs
- XmlSerializerSection.cs
- ConstructorBuilder.cs
- Condition.cs
- Trace.cs
- DefaultShape.cs
- ObjectView.cs
- XmlReturnReader.cs
- Point3DIndependentAnimationStorage.cs
- TreeViewImageKeyConverter.cs
- QueryGeneratorBase.cs
- UIElementIsland.cs
- WebPartCollection.cs
- Point3DCollection.cs
- BindingElementCollection.cs
- DnsEndPoint.cs
- GenericEnumConverter.cs
- TypeDescriptionProviderAttribute.cs
- ValidationSummary.cs
- OleDbStruct.cs
- BevelBitmapEffect.cs
- ItemsPanelTemplate.cs
- UpdateManifestForBrowserApplication.cs
- PenCursorManager.cs
- CssClassPropertyAttribute.cs
- DetailsViewInsertedEventArgs.cs
- PropertyPathConverter.cs
- XmlTextReaderImpl.cs
- TextSelection.cs
- ZipIOFileItemStream.cs
- MsmqBindingElementBase.cs
- PersonalizationStateInfoCollection.cs
- XmlValidatingReader.cs
- SqlParameterCollection.cs
- EventlogProvider.cs
- GenericPrincipal.cs
- Int32Rect.cs
- CriticalFileToken.cs
- ToolStripOverflow.cs
- NativeMethods.cs
- AsymmetricSecurityBindingElement.cs
- CodeExpressionCollection.cs
- RequestCacheManager.cs
- ErrorLog.cs
- LinearGradientBrush.cs
- WindowsRebar.cs
- SupportingTokenSecurityTokenResolver.cs
- EmptyElement.cs
- ImageAttributes.cs
- DataGridViewCellValidatingEventArgs.cs
- ProfilePropertySettings.cs
- NonParentingControl.cs
- PasswordTextContainer.cs
- XmlTextEncoder.cs
- WebPartConnectionCollection.cs
- RequiredAttributeAttribute.cs
- DesignBindingPicker.cs
- CodeCommentStatementCollection.cs
- LinkUtilities.cs
- StringFormat.cs
- SiteMapDataSource.cs
- NetSectionGroup.cs
- InheritablePropertyChangeInfo.cs
- ConfigurationElementProperty.cs
- FtpWebResponse.cs
- SafeHandles.cs
- XamlWriter.cs
- AudioFormatConverter.cs
- AsymmetricAlgorithm.cs
- FormsAuthentication.cs
- SafeRightsManagementQueryHandle.cs
- Hashtable.cs
- NavigationPropertyEmitter.cs
- SamlConstants.cs
- InvalidPrinterException.cs
- ScriptMethodAttribute.cs
- ListDictionary.cs
- WindowsBrush.cs
- PolicyFactory.cs
- CaseCqlBlock.cs
- PlainXmlWriter.cs
- UnsafeNetInfoNativeMethods.cs
- PreviousTrackingServiceAttribute.cs
- Int64AnimationUsingKeyFrames.cs
- FamilyMap.cs
- ElementNotEnabledException.cs
- TiffBitmapEncoder.cs
- ConfigurationFileMap.cs
- ConnectorRouter.cs
- TimeZone.cs
- TreeIterators.cs
- Win32Exception.cs
- SimpleType.cs