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
- SafeFileHandle.cs
- ContainerTracking.cs
- SqlUtils.cs
- CodeStatement.cs
- TypeSystemProvider.cs
- MenuItemStyle.cs
- DynamicResourceExtensionConverter.cs
- DataGridViewCellConverter.cs
- InkSerializer.cs
- Filter.cs
- UxThemeWrapper.cs
- MemberPathMap.cs
- HtmlInputSubmit.cs
- ArrayWithOffset.cs
- ConfigXmlText.cs
- PromptBuilder.cs
- MenuItemCollectionEditor.cs
- ClientSettingsSection.cs
- MissingMethodException.cs
- CompositeTypefaceMetrics.cs
- ManifestBasedResourceGroveler.cs
- JsonObjectDataContract.cs
- GeneralTransform.cs
- MobileCategoryAttribute.cs
- XmlAttributeHolder.cs
- InstanceKeyCollisionException.cs
- DeclarativeCatalogPart.cs
- AuthenticateEventArgs.cs
- Rect3D.cs
- BrowserDefinitionCollection.cs
- ContentElement.cs
- ButtonPopupAdapter.cs
- SoapEnumAttribute.cs
- PictureBox.cs
- XmlSchemaAny.cs
- QilValidationVisitor.cs
- Helper.cs
- VirtualPathUtility.cs
- EncoderParameters.cs
- StreamingContext.cs
- DocumentPageHost.cs
- MachineSettingsSection.cs
- HttpRequestTraceRecord.cs
- AspProxy.cs
- AssemblyAttributes.cs
- RectangleConverter.cs
- CacheVirtualItemsEvent.cs
- SessionEndingCancelEventArgs.cs
- HitTestParameters.cs
- ObjectStateEntryDbDataRecord.cs
- CharConverter.cs
- LinqExpressionNormalizer.cs
- XmlDataSourceNodeDescriptor.cs
- XmlSchemaAnnotation.cs
- DesignTimeTemplateParser.cs
- RevocationPoint.cs
- AtomContentProperty.cs
- WebScriptEnablingElement.cs
- Signature.cs
- CombinedHttpChannel.cs
- TextTreeUndo.cs
- QueryResult.cs
- EncodingInfo.cs
- CatalogZoneBase.cs
- LabelInfo.cs
- RegisteredArrayDeclaration.cs
- EventRoute.cs
- AutoFocusStyle.xaml.cs
- IsolatedStorageFileStream.cs
- BaseCodeDomTreeGenerator.cs
- HotSpot.cs
- WebPartDeleteVerb.cs
- _NestedSingleAsyncResult.cs
- DropShadowBitmapEffect.cs
- GeometryGroup.cs
- ConfigurationException.cs
- WebPartCollection.cs
- ErrorRuntimeConfig.cs
- IndependentlyAnimatedPropertyMetadata.cs
- CFGGrammar.cs
- XmlILConstructAnalyzer.cs
- SiteOfOriginPart.cs
- ContainerParagraph.cs
- TextComposition.cs
- Array.cs
- TrackingMemoryStreamFactory.cs
- StandardToolWindows.cs
- OleServicesContext.cs
- QilTargetType.cs
- ContentPropertyAttribute.cs
- LinkButton.cs
- KeyboardNavigation.cs
- PointLight.cs
- UriTemplatePathSegment.cs
- SharedConnectionListener.cs
- BCryptHashAlgorithm.cs
- RectangleGeometry.cs
- SignatureResourcePool.cs
- TextMessageEncoder.cs
- ClusterSafeNativeMethods.cs