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
- WebZone.cs
- Delegate.cs
- Part.cs
- StackSpiller.cs
- FaultDesigner.cs
- ScrollChrome.cs
- XPathChildIterator.cs
- CodeTypeDelegate.cs
- XmlCharCheckingWriter.cs
- HtmlLabelAdapter.cs
- PathBox.cs
- BitmapCache.cs
- DataColumnMapping.cs
- CodeNamespaceImport.cs
- QilValidationVisitor.cs
- XamlGridLengthSerializer.cs
- SystemTcpConnection.cs
- TabPage.cs
- RootBrowserWindowProxy.cs
- MembershipPasswordException.cs
- TablePatternIdentifiers.cs
- BitmapCache.cs
- WebBrowserNavigatedEventHandler.cs
- UnknownBitmapDecoder.cs
- ManagementDateTime.cs
- WebPartCollection.cs
- NetDataContractSerializer.cs
- MimeReflector.cs
- oledbconnectionstring.cs
- WindowsSecurityToken.cs
- DelimitedListTraceListener.cs
- AssemblyFilter.cs
- DiagnosticTrace.cs
- SqlInternalConnectionTds.cs
- CustomSignedXml.cs
- TimeoutValidationAttribute.cs
- WindowsFormsHostPropertyMap.cs
- HostingEnvironment.cs
- UnsafeNativeMethods.cs
- InternalCache.cs
- CompensatableTransactionScopeActivityDesigner.cs
- DataGridItemEventArgs.cs
- FrameworkContextData.cs
- EventPrivateKey.cs
- AssemblyAttributesGoHere.cs
- CommonObjectSecurity.cs
- SafeBitVector32.cs
- SweepDirectionValidation.cs
- ProcessModuleDesigner.cs
- MetadataCache.cs
- PointCollection.cs
- Rule.cs
- ParagraphResult.cs
- DependencyPropertyConverter.cs
- RootDesignerSerializerAttribute.cs
- BuildDependencySet.cs
- DataGridViewSelectedRowCollection.cs
- DetailsViewRowCollection.cs
- PropertySet.cs
- QuadraticBezierSegment.cs
- SessionIDManager.cs
- HashAlgorithm.cs
- XmlAnyAttributeAttribute.cs
- RecognitionEventArgs.cs
- TcpActivation.cs
- NativeMethods.cs
- ResetableIterator.cs
- AnnotationResourceChangedEventArgs.cs
- IndexedGlyphRun.cs
- CacheMode.cs
- DetailsViewModeEventArgs.cs
- DataGridViewSelectedCellCollection.cs
- ScaleTransform3D.cs
- ProfileService.cs
- FilterableData.cs
- StylusPointProperty.cs
- XmlDigitalSignatureProcessor.cs
- WizardPanelChangingEventArgs.cs
- SoapMessage.cs
- XmlWellformedWriter.cs
- DomainLiteralReader.cs
- FloaterParaClient.cs
- GridViewRowCollection.cs
- BuildManagerHost.cs
- SoapSchemaImporter.cs
- SharedPersonalizationStateInfo.cs
- WorkerRequest.cs
- _SslState.cs
- ComplexTypeEmitter.cs
- BitmapMetadataBlob.cs
- MenuEventArgs.cs
- SmtpReplyReader.cs
- OperandQuery.cs
- DataGridViewRowEventArgs.cs
- ObjectContextServiceProvider.cs
- Renderer.cs
- CatalogPartCollection.cs
- XmlElementAttributes.cs
- PopOutPanel.cs
- AudioFormatConverter.cs