Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- ImageIndexConverter.cs
- SelectionRange.cs
- TimeoutException.cs
- TypeSchema.cs
- ApplicationId.cs
- WindowsGraphicsWrapper.cs
- AccessViolationException.cs
- ReadOnlyDictionary.cs
- WindowsGraphicsWrapper.cs
- MatrixKeyFrameCollection.cs
- NotFiniteNumberException.cs
- Visual.cs
- DesignConnection.cs
- MemberPath.cs
- DesignerVerb.cs
- FocusManager.cs
- Binding.cs
- SqlTypesSchemaImporter.cs
- TextBoxLine.cs
- OracleDataReader.cs
- HttpProfileGroupBase.cs
- FormatterConverter.cs
- AdCreatedEventArgs.cs
- OleDbError.cs
- NamespaceInfo.cs
- NetPeerTcpBindingElement.cs
- CatalogZone.cs
- CurrencyManager.cs
- _Rfc2616CacheValidators.cs
- StandardTransformFactory.cs
- HttpListenerRequest.cs
- TabItemWrapperAutomationPeer.cs
- XmlSchemaRedefine.cs
- MsmqHostedTransportManager.cs
- ExcCanonicalXml.cs
- TemplateXamlTreeBuilder.cs
- GridViewHeaderRowPresenter.cs
- XmlDataLoader.cs
- DayRenderEvent.cs
- XamlValidatingReader.cs
- AnnotationService.cs
- Brush.cs
- DescendentsWalker.cs
- UInt32.cs
- EventBuilder.cs
- MonikerProxyAttribute.cs
- GenerateTemporaryTargetAssembly.cs
- NameTable.cs
- WindowsListViewGroup.cs
- DBConcurrencyException.cs
- ExpressionDumper.cs
- RootDesignerSerializerAttribute.cs
- CachingHintValidation.cs
- PrintDocument.cs
- CodeSubDirectoriesCollection.cs
- SemaphoreFullException.cs
- StorageAssociationSetMapping.cs
- uribuilder.cs
- DataRecordInternal.cs
- MetadataStore.cs
- VirtualDirectoryMappingCollection.cs
- shaper.cs
- HttpWebRequestElement.cs
- PointKeyFrameCollection.cs
- CryptoKeySecurity.cs
- UpdatePanel.cs
- SchemaCollectionCompiler.cs
- FrameAutomationPeer.cs
- StreamReader.cs
- AutoScrollHelper.cs
- DataGridViewImageColumn.cs
- CaseStatement.cs
- ObjectToken.cs
- COAUTHINFO.cs
- CommandBindingCollection.cs
- XComponentModel.cs
- DES.cs
- ObjectMemberMapping.cs
- WebBrowsableAttribute.cs
- CapabilitiesUse.cs
- StatusBarItem.cs
- EntityViewContainer.cs
- GeneralTransform3D.cs
- HandledEventArgs.cs
- BigInt.cs
- PartBasedPackageProperties.cs
- Quaternion.cs
- PointLightBase.cs
- PopupRoot.cs
- TextDocumentView.cs
- EntityEntry.cs
- HScrollBar.cs
- XmlReflectionMember.cs
- SoundPlayer.cs
- CodeTypeReferenceCollection.cs
- SqlDataSourceStatusEventArgs.cs
- PolicyLevel.cs
- ListViewItemEventArgs.cs
- JoinGraph.cs
- cookiecollection.cs