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
- AxisAngleRotation3D.cs
- XmlTextEncoder.cs
- _Events.cs
- WebPartHelpVerb.cs
- CharStorage.cs
- SerializerWriterEventHandlers.cs
- ExpressionVisitorHelpers.cs
- PathTooLongException.cs
- ContentElement.cs
- XmlElementList.cs
- SiteMapSection.cs
- XmlSchemaSequence.cs
- TableCellCollection.cs
- OpenTypeCommon.cs
- FixedTextSelectionProcessor.cs
- LocationChangedEventArgs.cs
- SliderAutomationPeer.cs
- ComplusTypeValidator.cs
- ImagingCache.cs
- MetadataLocation.cs
- DataException.cs
- ResourceReferenceKeyNotFoundException.cs
- fixedPageContentExtractor.cs
- InvalidPrinterException.cs
- XamlSerializerUtil.cs
- ArrayList.cs
- DataServicePagingProviderWrapper.cs
- GridLengthConverter.cs
- LoginUtil.cs
- Span.cs
- DragEventArgs.cs
- ExpressionTable.cs
- Operator.cs
- ByteAnimationUsingKeyFrames.cs
- XmlAutoDetectWriter.cs
- HebrewCalendar.cs
- SizeChangedInfo.cs
- Automation.cs
- UIElement3DAutomationPeer.cs
- ClientTargetSection.cs
- IntegrationExceptionEventArgs.cs
- MeshGeometry3D.cs
- ComponentGlyph.cs
- FileNameEditor.cs
- ParserOptions.cs
- StorageEntitySetMapping.cs
- PropertyReference.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- TextUtf8RawTextWriter.cs
- LinqDataSourceSelectEventArgs.cs
- ResourceManager.cs
- SmiRequestExecutor.cs
- Camera.cs
- MarkupCompiler.cs
- HtmlImage.cs
- FrameworkContentElement.cs
- ToolBar.cs
- Column.cs
- PublishLicense.cs
- ClientConfigPaths.cs
- EntityCommandDefinition.cs
- UpdatePanelTriggerCollection.cs
- SimpleWorkerRequest.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- FormattedText.cs
- BuilderInfo.cs
- PersonalizationProvider.cs
- ChannelTraceRecord.cs
- TextRangeEditTables.cs
- DateTimeSerializationSection.cs
- FlowNode.cs
- SspiNegotiationTokenAuthenticatorState.cs
- DtdParser.cs
- DataKeyCollection.cs
- Compress.cs
- NamedPipeProcessProtocolHandler.cs
- XmlILModule.cs
- securestring.cs
- CustomLineCap.cs
- BitmapScalingModeValidation.cs
- CollectionView.cs
- Rotation3DKeyFrameCollection.cs
- AssemblyAssociatedContentFileAttribute.cs
- Viewport2DVisual3D.cs
- TextSelection.cs
- MouseEvent.cs
- ModifyActivitiesPropertyDescriptor.cs
- StringStorage.cs
- SingleAnimationUsingKeyFrames.cs
- ExitEventArgs.cs
- IxmlLineInfo.cs
- COM2Enum.cs
- loginstatus.cs
- CodeTypeDelegate.cs
- DependencyPropertyDescriptor.cs
- SizeKeyFrameCollection.cs
- LocalizableResourceBuilder.cs
- DataList.cs
- ObjectQueryState.cs
- QueryableFilterRepeater.cs