Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- CommonRemoteMemoryBlock.cs
- MediaContext.cs
- SafeSecurityHandles.cs
- SrgsElementFactoryCompiler.cs
- Subset.cs
- _SingleItemRequestCache.cs
- NotifyParentPropertyAttribute.cs
- AnnotationService.cs
- SelectionHighlightInfo.cs
- FreeFormDragDropManager.cs
- ClientBuildManager.cs
- MarshalDirectiveException.cs
- DataFieldCollectionEditor.cs
- Iis7Helper.cs
- XmlHierarchicalEnumerable.cs
- SqlVersion.cs
- FirstMatchCodeGroup.cs
- Literal.cs
- Quaternion.cs
- Module.cs
- Compiler.cs
- CharacterString.cs
- XsltSettings.cs
- XmlSchemaImport.cs
- D3DImage.cs
- CodeSubDirectory.cs
- ToolStripDropDownMenu.cs
- isolationinterop.cs
- Int64Storage.cs
- DSASignatureFormatter.cs
- _SslState.cs
- RequiredFieldValidator.cs
- DesignerResources.cs
- BufferedGraphics.cs
- MultipartContentParser.cs
- SolidColorBrush.cs
- ArrayWithOffset.cs
- ShapingEngine.cs
- EnumerationRangeValidationUtil.cs
- PointConverter.cs
- SimpleTableProvider.cs
- sortedlist.cs
- TreeBuilderXamlTranslator.cs
- WebPart.cs
- ScriptReferenceEventArgs.cs
- LongPath.cs
- DetailsViewUpdateEventArgs.cs
- PtsPage.cs
- InfoCardCryptoHelper.cs
- HotSpotCollectionEditor.cs
- RowParagraph.cs
- MemberHolder.cs
- GenericAuthenticationEventArgs.cs
- EnumerationRangeValidationUtil.cs
- OracleParameterCollection.cs
- HexParser.cs
- CodeDefaultValueExpression.cs
- XmlBinaryReaderSession.cs
- FlowLayout.cs
- ServiceChannel.cs
- EntityReference.cs
- ContainsSearchOperator.cs
- SmtpLoginAuthenticationModule.cs
- WebBrowserEvent.cs
- SchemaNames.cs
- ViewManagerAttribute.cs
- CompressEmulationStream.cs
- DependsOnAttribute.cs
- ResourceKey.cs
- XmlCustomFormatter.cs
- StringDictionary.cs
- TextParagraph.cs
- FileFormatException.cs
- TimersDescriptionAttribute.cs
- DataControlFieldHeaderCell.cs
- CommentEmitter.cs
- DataSourceView.cs
- NavigatingCancelEventArgs.cs
- Pts.cs
- FieldBuilder.cs
- DefaultEventAttribute.cs
- MSAAWinEventWrap.cs
- ManagedWndProcTracker.cs
- HwndMouseInputProvider.cs
- PropertyChangedEventArgs.cs
- PropertyItemInternal.cs
- TransformedBitmap.cs
- IHttpResponseInternal.cs
- ConstraintStruct.cs
- InfocardClientCredentials.cs
- SqlConnection.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- SettingsProperty.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- IRCollection.cs
- OnOperation.cs
- Message.cs
- RegexStringValidator.cs
- CertificateReferenceElement.cs
- SerializationSectionGroup.cs