Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- WebPartManager.cs
- ConsoleCancelEventArgs.cs
- GridViewColumnCollectionChangedEventArgs.cs
- PolygonHotSpot.cs
- UserControlDesigner.cs
- TouchDevice.cs
- ConfigurationSettings.cs
- ImageCreator.cs
- WebPartConnectionsCloseVerb.cs
- ObjectListFieldCollection.cs
- TrackingProfileSerializer.cs
- LinkedDataMemberFieldEditor.cs
- DbConnectionFactory.cs
- GuidTagList.cs
- MessageDescription.cs
- FontFamilyIdentifier.cs
- TdsParserStateObject.cs
- Control.cs
- ExpandSegment.cs
- pingexception.cs
- AssociationType.cs
- SqlProcedureAttribute.cs
- BitmapEncoder.cs
- ValidatingPropertiesEventArgs.cs
- KeyboardNavigation.cs
- FlowLayoutPanel.cs
- StreamReader.cs
- ExtensionQuery.cs
- ChtmlTextWriter.cs
- ElementAction.cs
- brushes.cs
- XPathNavigator.cs
- OracleTransaction.cs
- Parser.cs
- ByteStreamMessage.cs
- HandlerFactoryWrapper.cs
- CurrentChangedEventManager.cs
- COM2PropertyDescriptor.cs
- StrongName.cs
- CharUnicodeInfo.cs
- DataGridCommandEventArgs.cs
- Propagator.JoinPropagator.JoinPredicateVisitor.cs
- RegexReplacement.cs
- Table.cs
- PagedDataSource.cs
- PackageRelationshipSelector.cs
- HotCommands.cs
- ClientOptions.cs
- Drawing.cs
- WinFormsSpinner.cs
- XPathNodeIterator.cs
- DrawingBrush.cs
- ResolveNameEventArgs.cs
- QuotedPrintableStream.cs
- BinHexDecoder.cs
- GenericWebPart.cs
- InsufficientMemoryException.cs
- DelegatingTypeDescriptionProvider.cs
- Color.cs
- HttpException.cs
- LoginAutoFormat.cs
- TableRow.cs
- DbMetaDataCollectionNames.cs
- IdentityManager.cs
- NullReferenceException.cs
- TextTreeInsertElementUndoUnit.cs
- NonClientArea.cs
- DelegatingMessage.cs
- XmlSchemaAnnotated.cs
- SHA384Managed.cs
- ColumnWidthChangingEvent.cs
- StylusDevice.cs
- RecognizerBase.cs
- DataFormats.cs
- _ContextAwareResult.cs
- Asn1IntegerConverter.cs
- Compiler.cs
- SecondaryViewProvider.cs
- Matrix3DConverter.cs
- CodeAccessPermission.cs
- TextElement.cs
- EventLog.cs
- UrlRoutingModule.cs
- ManagementException.cs
- ParameterCollection.cs
- WebPartConnectionsConnectVerb.cs
- ObjectDataSourceSelectingEventArgs.cs
- SafeReversePInvokeHandle.cs
- Regex.cs
- TraceLevelStore.cs
- AsyncResult.cs
- SuppressIldasmAttribute.cs
- ContainerParagraph.cs
- PipeSecurity.cs
- AssemblyCache.cs
- SqlConnectionString.cs
- DocumentPageView.cs
- TreeViewImageGenerator.cs
- AppDomainFactory.cs
- HttpListenerContext.cs