Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Executor.cs
- SiteMapPath.cs
- BitmapCodecInfo.cs
- SQLDecimal.cs
- DefaultValueTypeConverter.cs
- PtsHost.cs
- MetadataUtilsSmi.cs
- ManipulationDeltaEventArgs.cs
- ListControl.cs
- CodePageUtils.cs
- StoryFragments.cs
- AuthorizationRule.cs
- PolyLineSegment.cs
- RelationshipConverter.cs
- WorkflowMessageEventArgs.cs
- OdbcDataReader.cs
- DoWorkEventArgs.cs
- NotSupportedException.cs
- SmtpException.cs
- EmptyCollection.cs
- COM2PropertyDescriptor.cs
- SchemaInfo.cs
- Tuple.cs
- FilterQuery.cs
- SecurityElement.cs
- ConditionalAttribute.cs
- ZipIOLocalFileHeader.cs
- ForceCopyBuildProvider.cs
- CryptoStream.cs
- OrderedEnumerableRowCollection.cs
- Configuration.cs
- WhiteSpaceTrimStringConverter.cs
- Events.cs
- Sequence.cs
- ValidatorUtils.cs
- ListItemCollection.cs
- _SingleItemRequestCache.cs
- SessionStateSection.cs
- PageStatePersister.cs
- AttachedPropertyMethodSelector.cs
- XPathScanner.cs
- BitmapEffect.cs
- ColorPalette.cs
- Request.cs
- CharacterBuffer.cs
- MenuItemBindingCollection.cs
- DoubleAnimationClockResource.cs
- _DigestClient.cs
- cookiecollection.cs
- ProfileManager.cs
- EventMappingSettings.cs
- BuildProvider.cs
- SourceSwitch.cs
- HttpProfileBase.cs
- NotifyParentPropertyAttribute.cs
- StreamReader.cs
- Documentation.cs
- DataBinder.cs
- Selector.cs
- AttributeExtensions.cs
- MessageFilter.cs
- InvalidCastException.cs
- DataViewSetting.cs
- ToolBarButton.cs
- ReflectionUtil.cs
- DictionaryEntry.cs
- StorageAssociationSetMapping.cs
- WindowsFormsSectionHandler.cs
- Helper.cs
- DataGridViewSelectedCellCollection.cs
- ContentPresenter.cs
- AssemblyGen.cs
- MediaSystem.cs
- CheckBoxPopupAdapter.cs
- DictionaryBase.cs
- UITypeEditor.cs
- TreeViewImageGenerator.cs
- FixedBufferAttribute.cs
- PolyLineSegmentFigureLogic.cs
- GlyphShapingProperties.cs
- PropertyIdentifier.cs
- Task.cs
- DataGridColumnCollection.cs
- MULTI_QI.cs
- LoadedOrUnloadedOperation.cs
- AppSettingsSection.cs
- SystemColors.cs
- TextReader.cs
- DataObjectEventArgs.cs
- PropertySegmentSerializer.cs
- ElementFactory.cs
- IsolatedStorage.cs
- PersonalizationState.cs
- SafeNativeMethods.cs
- XPathScanner.cs
- TabControlToolboxItem.cs
- ThrowHelper.cs
- ExpressionEvaluator.cs
- PointCollectionConverter.cs
- DbProviderFactoriesConfigurationHandler.cs