Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- CustomCredentialPolicy.cs
- SequenceDesignerAccessibleObject.cs
- NavigationPropertyEmitter.cs
- ClientProxyGenerator.cs
- NumberAction.cs
- __FastResourceComparer.cs
- StateManagedCollection.cs
- XmlSchemaDocumentation.cs
- ECDiffieHellmanCngPublicKey.cs
- ContentAlignmentEditor.cs
- AsymmetricSecurityProtocol.cs
- versioninfo.cs
- CompModHelpers.cs
- SqlTopReducer.cs
- PerformanceCounterManager.cs
- SystemInfo.cs
- SQLBytesStorage.cs
- EventData.cs
- DataServiceHostWrapper.cs
- WindowsPen.cs
- ScriptingJsonSerializationSection.cs
- WeakReference.cs
- CodeArrayCreateExpression.cs
- MenuItem.cs
- FocusWithinProperty.cs
- SetUserPreferenceRequest.cs
- CreateRefExpr.cs
- WindowsGrip.cs
- Timer.cs
- ExpandCollapsePattern.cs
- ObservableCollection.cs
- DisplayInformation.cs
- CodeCompileUnit.cs
- Error.cs
- ExpandCollapseProviderWrapper.cs
- SiteMapNodeItem.cs
- SQLDouble.cs
- DoubleCollectionConverter.cs
- RSAOAEPKeyExchangeDeformatter.cs
- Nodes.cs
- DescendentsWalkerBase.cs
- TemplateControlCodeDomTreeGenerator.cs
- PortCache.cs
- NavigationService.cs
- AttachedAnnotationChangedEventArgs.cs
- ScriptingScriptResourceHandlerSection.cs
- MemberProjectionIndex.cs
- UnsafeNativeMethods.cs
- PinnedBufferMemoryStream.cs
- PixelFormats.cs
- IteratorFilter.cs
- StateRuntime.cs
- ThemeableAttribute.cs
- SrgsElement.cs
- ComponentFactoryHelpers.cs
- SerialPinChanges.cs
- BitmapImage.cs
- ReadOnlyTernaryTree.cs
- SiteMapNode.cs
- XmlEncodedRawTextWriter.cs
- COM2ExtendedTypeConverter.cs
- PixelFormat.cs
- TemplateKey.cs
- objectresult_tresulttype.cs
- Serializer.cs
- StylusButton.cs
- CopyOfAction.cs
- StateChangeEvent.cs
- PenThreadPool.cs
- SubpageParaClient.cs
- AvTraceDetails.cs
- DataViewSetting.cs
- dataprotectionpermission.cs
- X509WindowsSecurityToken.cs
- WebPartDisplayMode.cs
- HyperLinkColumn.cs
- ScriptBehaviorDescriptor.cs
- CollectionChangedEventManager.cs
- IIS7UserPrincipal.cs
- SiteIdentityPermission.cs
- IndexedEnumerable.cs
- ModelPropertyCollectionImpl.cs
- ExtenderProvidedPropertyAttribute.cs
- DbConnectionPoolCounters.cs
- ResXResourceReader.cs
- RelationshipNavigation.cs
- ExeConfigurationFileMap.cs
- PnrpPeerResolverBindingElement.cs
- UriExt.cs
- VirtualPathUtility.cs
- EntityCommandDefinition.cs
- PriorityQueue.cs
- LineVisual.cs
- Behavior.cs
- BamlResourceSerializer.cs
- SelectiveScrollingGrid.cs
- DependencyPropertyHelper.cs
- FloaterBaseParaClient.cs
- _NegotiateClient.cs
- AssociationTypeEmitter.cs