Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ScopelessEnumAttribute.cs
- ServiceOperationInvoker.cs
- Point4DConverter.cs
- TraceSource.cs
- SqlDataSourceQueryEditorForm.cs
- ManifestResourceInfo.cs
- UrlAuthFailedErrorFormatter.cs
- StylusEditingBehavior.cs
- UrlPropertyAttribute.cs
- DataBoundControl.cs
- TemplateColumn.cs
- RuntimeWrappedException.cs
- XmlCollation.cs
- SqlDataSourceAdvancedOptionsForm.cs
- SmiSettersStream.cs
- EnumMember.cs
- CommonProperties.cs
- SettingsBindableAttribute.cs
- PreservationFileReader.cs
- SystemInformation.cs
- SourceFileInfo.cs
- QueryResponse.cs
- SafeEventHandle.cs
- ObfuscateAssemblyAttribute.cs
- XmlLoader.cs
- OperationCanceledException.cs
- Line.cs
- LoginViewDesigner.cs
- IisTraceWebEventProvider.cs
- AQNBuilder.cs
- OleDbCommandBuilder.cs
- BinaryConverter.cs
- DesignerActionService.cs
- isolationinterop.cs
- PropertyChangedEventManager.cs
- EventLogInternal.cs
- TransformerConfigurationWizardBase.cs
- StateRuntime.cs
- LineSegment.cs
- MetadataException.cs
- ExternalDataExchangeService.cs
- WindowsFormsHostPropertyMap.cs
- DataGridViewComponentPropertyGridSite.cs
- DesignerWidgets.cs
- InstalledFontCollection.cs
- TypeInformation.cs
- CryptoApi.cs
- UserControlBuildProvider.cs
- UniqueEventHelper.cs
- BrowsableAttribute.cs
- SqlProfileProvider.cs
- Tuple.cs
- BooleanKeyFrameCollection.cs
- PTConverter.cs
- PolyLineSegment.cs
- MetadataCacheItem.cs
- ToolStripSplitStackLayout.cs
- RadioButtonDesigner.cs
- FontStretch.cs
- MediaScriptCommandRoutedEventArgs.cs
- ScriptControl.cs
- SetterBaseCollection.cs
- DynamicValidator.cs
- StyleSelector.cs
- StartUpEventArgs.cs
- NullRuntimeConfig.cs
- PropertyGridEditorPart.cs
- GB18030Encoding.cs
- RefreshPropertiesAttribute.cs
- ImageBrush.cs
- AssemblyName.cs
- MobileContainerDesigner.cs
- ComponentDispatcher.cs
- SQLConvert.cs
- Cast.cs
- DesignerActionPanel.cs
- ThicknessAnimation.cs
- DefaultTextStoreTextComposition.cs
- Point4DConverter.cs
- SafePEFileHandle.cs
- Contracts.cs
- TextModifierScope.cs
- FileLoadException.cs
- HttpWebResponse.cs
- XsdDateTime.cs
- SqlResolver.cs
- ProgressiveCrcCalculatingStream.cs
- CommentEmitter.cs
- AdditionalEntityFunctions.cs
- EventWaitHandleSecurity.cs
- LostFocusEventManager.cs
- BuildProviderCollection.cs
- PhysicalAddress.cs
- BrowserCapabilitiesFactory.cs
- Query.cs
- AppManager.cs
- EditBehavior.cs
- WebServicesInteroperability.cs
- COM2ICategorizePropertiesHandler.cs
- CodeCastExpression.cs