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
- DtdParser.cs
- TcpDuplicateContext.cs
- VariantWrapper.cs
- ColorDialog.cs
- unsafeIndexingFilterStream.cs
- PointCollection.cs
- Mappings.cs
- SQLDoubleStorage.cs
- GeometryValueSerializer.cs
- SamlAttributeStatement.cs
- SqlRewriteScalarSubqueries.cs
- EnumMember.cs
- Positioning.cs
- ThreadStartException.cs
- SelectorAutomationPeer.cs
- ContentFileHelper.cs
- ISAPIApplicationHost.cs
- IImplicitResourceProvider.cs
- XmlSortKeyAccumulator.cs
- HttpRequestTraceRecord.cs
- StatusBar.cs
- SQLDoubleStorage.cs
- GetTokenRequest.cs
- SystemIcons.cs
- SignatureDescription.cs
- SortableBindingList.cs
- XmlSchemaGroup.cs
- DrawListViewColumnHeaderEventArgs.cs
- OracleException.cs
- StorageEntitySetMapping.cs
- MergePropertyDescriptor.cs
- TextEditorCopyPaste.cs
- SettingsPropertyCollection.cs
- InfoCardService.cs
- IconBitmapDecoder.cs
- AutoFocusStyle.xaml.cs
- SiteMapPath.cs
- XmlSchemaObject.cs
- Point.cs
- BatchWriter.cs
- MemberJoinTreeNode.cs
- InputBinder.cs
- WpfSharedBamlSchemaContext.cs
- SerializationHelper.cs
- ComplexPropertyEntry.cs
- Publisher.cs
- ExpressionServices.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- JobPageOrder.cs
- ProxyHelper.cs
- ProgramNode.cs
- InfoCardRSAPKCS1SignatureDeformatter.cs
- ByteAnimationBase.cs
- TextBoxView.cs
- ObjectStateEntry.cs
- UndoManager.cs
- DecryptRequest.cs
- DoubleAnimationUsingPath.cs
- DocumentEventArgs.cs
- SymmetricSecurityProtocol.cs
- AliasExpr.cs
- XmlArrayItemAttributes.cs
- ApplicationInfo.cs
- MsmqException.cs
- StreamWriter.cs
- storepermissionattribute.cs
- GenericXmlSecurityToken.cs
- CompoundFileDeflateTransform.cs
- GraphicsPath.cs
- EntitySetBase.cs
- SchemaInfo.cs
- ReverseInheritProperty.cs
- ReadOnlyDataSource.cs
- TreeNode.cs
- AxisAngleRotation3D.cs
- TabOrder.cs
- ClientConfigurationHost.cs
- DrawingGroup.cs
- ComboBoxItem.cs
- ScalarType.cs
- TriggerBase.cs
- MarkupCompilePass1.cs
- XmlSecureResolver.cs
- CodeParameterDeclarationExpression.cs
- UnsafeNativeMethods.cs
- ControlPaint.cs
- ErrorStyle.cs
- ConnectionPoolManager.cs
- DataObject.cs
- x509utils.cs
- NativeConfigurationLoader.cs
- FullTextBreakpoint.cs
- ThreadExceptionEvent.cs
- XmlnsDictionary.cs
- MetabaseReader.cs
- AnchoredBlock.cs
- SizeConverter.cs
- Tablet.cs
- ObjectListField.cs
- WindowsEditBox.cs