Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Shared / MS / Internal / WeakReferenceEnumerator.cs / 1 / 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
- NetSectionGroup.cs
- LayoutEvent.cs
- ErrorHandler.cs
- EntityProxyTypeInfo.cs
- SapiRecognizer.cs
- ProfileBuildProvider.cs
- ObjectCacheHost.cs
- ColorAnimationUsingKeyFrames.cs
- TreeViewImageIndexConverter.cs
- ClientOperationFormatterProvider.cs
- ButtonBaseAutomationPeer.cs
- PanelStyle.cs
- TextPointerBase.cs
- Persist.cs
- StringConcat.cs
- SplashScreenNativeMethods.cs
- ActivityCodeGenerator.cs
- TemplateAction.cs
- TextContainerChangedEventArgs.cs
- XmlSchemaDocumentation.cs
- DataSourceCache.cs
- HScrollProperties.cs
- TypefaceMap.cs
- NetStream.cs
- Resources.Designer.cs
- Properties.cs
- DataServiceHost.cs
- StaticTextPointer.cs
- SplitContainerDesigner.cs
- PassportAuthentication.cs
- CqlLexerHelpers.cs
- XmlSchemaImport.cs
- Facet.cs
- UrlPropertyAttribute.cs
- SelectionRangeConverter.cs
- TableProviderWrapper.cs
- DataGridViewLayoutData.cs
- ReplyChannel.cs
- PageCatalogPart.cs
- CompositeActivityCodeGenerator.cs
- SerialReceived.cs
- XmlQueryStaticData.cs
- MultiPageTextView.cs
- OrderingQueryOperator.cs
- SingleStorage.cs
- IDReferencePropertyAttribute.cs
- TrailingSpaceComparer.cs
- WorkflowValidationFailedException.cs
- SqlCacheDependencyDatabase.cs
- TextWriter.cs
- LocalBuilder.cs
- GPPOINT.cs
- ErrorHandler.cs
- MyContact.cs
- ControlParameter.cs
- SiteMapNode.cs
- ScalarConstant.cs
- HyperLinkStyle.cs
- NeutralResourcesLanguageAttribute.cs
- GlobalItem.cs
- TableLayoutSettingsTypeConverter.cs
- XPathNodePointer.cs
- ConnectionManagementElement.cs
- HostedElements.cs
- SafeIUnknown.cs
- DecimalAnimation.cs
- SessionIDManager.cs
- TransformPattern.cs
- HandlerBase.cs
- OutArgumentConverter.cs
- EventLogPermissionAttribute.cs
- LogEntryHeaderDeserializer.cs
- WebSysDescriptionAttribute.cs
- SrgsRulesCollection.cs
- ProtectedConfigurationProviderCollection.cs
- WinInetCache.cs
- ScriptHandlerFactory.cs
- SHA384CryptoServiceProvider.cs
- ParallelEnumerable.cs
- CharEntityEncoderFallback.cs
- DecodeHelper.cs
- DetailsViewDeleteEventArgs.cs
- BuildDependencySet.cs
- XmlRootAttribute.cs
- EntityContainerEntitySet.cs
- RemotingException.cs
- PasswordDeriveBytes.cs
- BindingCollection.cs
- TimeZoneInfo.cs
- HttpConfigurationSystem.cs
- Metafile.cs
- ReflectionTypeLoadException.cs
- PageCatalogPart.cs
- ObjectViewListener.cs
- assertwrapper.cs
- ReflectionPermission.cs
- WebPartVerbsEventArgs.cs
- Choices.cs
- EmptyStringExpandableObjectConverter.cs
- IndentedWriter.cs