Code:
/ 4.0 / 4.0 / 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. 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
- CounterNameConverter.cs
- QualifiedCellIdBoolean.cs
- IsolatedStoragePermission.cs
- UniqueEventHelper.cs
- Clock.cs
- Span.cs
- DocumentGridPage.cs
- HandlerBase.cs
- TableParagraph.cs
- QueryContinueDragEvent.cs
- ComponentChangingEvent.cs
- RootBrowserWindowProxy.cs
- MarkupCompilePass1.cs
- Interfaces.cs
- ExcludeFromCodeCoverageAttribute.cs
- StringUtil.cs
- PathGeometry.cs
- RelationshipDetailsCollection.cs
- AsnEncodedData.cs
- KeyboardNavigation.cs
- SecurityBindingElement.cs
- TypeElementCollection.cs
- StorageEndPropertyMapping.cs
- EventArgs.cs
- SectionUpdates.cs
- RegexWorker.cs
- TemplateField.cs
- ControlEvent.cs
- Context.cs
- AsymmetricAlgorithm.cs
- PropertyItemInternal.cs
- FileStream.cs
- TextRangeEditTables.cs
- DataGridViewTextBoxCell.cs
- XmlSyndicationContent.cs
- FunctionImportMapping.cs
- TextSimpleMarkerProperties.cs
- PeerResolverElement.cs
- SystemIPAddressInformation.cs
- OrderedDictionaryStateHelper.cs
- PassportAuthenticationEventArgs.cs
- ExportOptions.cs
- VisualCollection.cs
- SafeHandles.cs
- XmlNamespaceManager.cs
- Keyboard.cs
- XmlHierarchyData.cs
- UrlAuthFailedErrorFormatter.cs
- RequestUriProcessor.cs
- sortedlist.cs
- SecurityContextKeyIdentifierClause.cs
- PackageController.cs
- HitTestWithGeometryDrawingContextWalker.cs
- TextRangeBase.cs
- NameTable.cs
- KnownTypes.cs
- FontConverter.cs
- FigureParagraph.cs
- CommandDevice.cs
- RegexCode.cs
- SortDescription.cs
- PrinterUnitConvert.cs
- EventPrivateKey.cs
- ExecutedRoutedEventArgs.cs
- CodeConstructor.cs
- AdornerLayer.cs
- PerfCounters.cs
- TextSelection.cs
- ComplusEndpointConfigContainer.cs
- InvalidOperationException.cs
- _LazyAsyncResult.cs
- SqlGatherProducedAliases.cs
- ObjectHelper.cs
- EdmToObjectNamespaceMap.cs
- CannotUnloadAppDomainException.cs
- GlobalId.cs
- GcHandle.cs
- ResourceSet.cs
- SyncMethodInvoker.cs
- MatrixStack.cs
- PassportIdentity.cs
- WindowsGraphicsCacheManager.cs
- HTMLTextWriter.cs
- DesignTimeTemplateParser.cs
- SpotLight.cs
- CodeStatement.cs
- InfoCardRSACryptoProvider.cs
- BamlResourceContent.cs
- HotSpot.cs
- ScriptResourceAttribute.cs
- EdmFunction.cs
- GradientStopCollection.cs
- InternalDispatchObject.cs
- ProcessModule.cs
- Size.cs
- MD5.cs
- XappLauncher.cs
- ProvidersHelper.cs
- HideDisabledControlAdapter.cs
- XappLauncher.cs