Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- NavigateEvent.cs
- RelationshipDetailsRow.cs
- WeakReferenceList.cs
- DesignerCategoryAttribute.cs
- ZipArchive.cs
- LateBoundBitmapDecoder.cs
- IISMapPath.cs
- ComponentChangingEvent.cs
- TableLayoutPanel.cs
- COM2ComponentEditor.cs
- TextDecorationUnitValidation.cs
- ExpressionVisitor.cs
- HelpKeywordAttribute.cs
- GeometryHitTestResult.cs
- ResourceIDHelper.cs
- RootBrowserWindowProxy.cs
- PartialCachingAttribute.cs
- DriveNotFoundException.cs
- DSASignatureFormatter.cs
- ActiveXContainer.cs
- BitmapEffectGroup.cs
- NativeActivityTransactionContext.cs
- DocumentPaginator.cs
- OutOfMemoryException.cs
- MimeParameter.cs
- ApplicationGesture.cs
- InfoCardTraceRecord.cs
- TraceHandler.cs
- RepeaterItem.cs
- XamlUtilities.cs
- RequestQueryProcessor.cs
- MoveSizeWinEventHandler.cs
- InfoCardCryptoHelper.cs
- ExtensibleClassFactory.cs
- recordstatescratchpad.cs
- RuntimeTransactionHandle.cs
- ProjectionQueryOptionExpression.cs
- MembershipSection.cs
- SrgsOneOf.cs
- BitVec.cs
- NeedSkipTokenVisitor.cs
- TemplateColumn.cs
- MulticastOption.cs
- externdll.cs
- RectangleConverter.cs
- TypeDependencyAttribute.cs
- XmlSchemaComplexContent.cs
- ObjectCloneHelper.cs
- UdpTransportSettings.cs
- WebServiceHandlerFactory.cs
- HandleCollector.cs
- DesignTimeDataBinding.cs
- XPathDescendantIterator.cs
- ItemContainerProviderWrapper.cs
- HttpModuleAction.cs
- Control.cs
- ProxyHwnd.cs
- DateTimeConstantAttribute.cs
- SqlExpressionNullability.cs
- MbpInfo.cs
- ComponentResourceManager.cs
- OracleMonthSpan.cs
- IIS7WorkerRequest.cs
- WindowsListBox.cs
- DeviceContext.cs
- UTF32Encoding.cs
- Char.cs
- MsmqQueue.cs
- FontFamily.cs
- PathFigureCollectionValueSerializer.cs
- Closure.cs
- IPEndPoint.cs
- TraceListeners.cs
- ColumnClickEvent.cs
- AlignmentYValidation.cs
- SafeNativeMethodsMilCoreApi.cs
- ProgressPage.cs
- ContactManager.cs
- HwndSource.cs
- X509Certificate2.cs
- ViewStateException.cs
- ResourceAssociationSet.cs
- ExecutionEngineException.cs
- XamlBuildTaskServices.cs
- SRDisplayNameAttribute.cs
- XmlBinaryReader.cs
- ExternalCalls.cs
- EntityContainerRelationshipSetEnd.cs
- WindowCollection.cs
- OdbcException.cs
- KnownAssemblyEntry.cs
- UnsafeNativeMethods.cs
- TreeSet.cs
- DbConnectionPoolGroup.cs
- ConnectionStringSettings.cs
- TaiwanCalendar.cs
- DocumentOrderQuery.cs
- Quaternion.cs
- ContextMenuAutomationPeer.cs
- MarshalByValueComponent.cs