Code:
/ 4.0 / 4.0 / 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. 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
- HotSpot.cs
- ListViewVirtualItemsSelectionRangeChangedEvent.cs
- MetaModel.cs
- ZipPackagePart.cs
- DataListItemCollection.cs
- FixedSOMTableRow.cs
- TokenCreationException.cs
- PropertyInfo.cs
- Debug.cs
- QuaternionRotation3D.cs
- SendMessageContent.cs
- XmlIncludeAttribute.cs
- CultureInfoConverter.cs
- RemotingConfiguration.cs
- RoleGroupCollection.cs
- PolyQuadraticBezierSegmentFigureLogic.cs
- ObjectItemCollectionAssemblyCacheEntry.cs
- UserPreferenceChangedEventArgs.cs
- ValidationEventArgs.cs
- BaseParagraph.cs
- RuleInfoComparer.cs
- DbProviderConfigurationHandler.cs
- KeyEvent.cs
- PageRanges.cs
- ServicePoint.cs
- FixedPosition.cs
- ResourceReferenceExpressionConverter.cs
- ReferenceAssemblyAttribute.cs
- RegistrationServices.cs
- WhitespaceRuleLookup.cs
- GradientBrush.cs
- WebHttpBinding.cs
- AnimationStorage.cs
- FilterQueryOptionExpression.cs
- BaseHashHelper.cs
- BitmapEffectDrawing.cs
- SecurityException.cs
- BufferedWebEventProvider.cs
- SqlDataSource.cs
- OutputCacheProfileCollection.cs
- DataGridPageChangedEventArgs.cs
- InkCanvasSelectionAdorner.cs
- PolyBezierSegmentFigureLogic.cs
- ToolStripScrollButton.cs
- ToolTipService.cs
- HostedTransportConfigurationManager.cs
- FactoryMaker.cs
- SizeConverter.cs
- SchemaCreator.cs
- DataSourceConverter.cs
- XPathEmptyIterator.cs
- AdjustableArrowCap.cs
- DesignerActionUI.cs
- ErrorInfoXmlDocument.cs
- GroupBoxDesigner.cs
- InkSerializer.cs
- Span.cs
- InstanceKeyView.cs
- EmbeddedMailObject.cs
- SettingsContext.cs
- LoginUtil.cs
- BrowsableAttribute.cs
- RayHitTestParameters.cs
- FieldAccessException.cs
- UpdateCommand.cs
- ValidationException.cs
- serverconfig.cs
- DataGridRowDetailsEventArgs.cs
- DocumentPage.cs
- ReadOnlyDataSource.cs
- DesignerActionVerbList.cs
- AttachInfo.cs
- LicenseManager.cs
- SqlNode.cs
- ActivityValidator.cs
- Axis.cs
- NetDataContractSerializer.cs
- WmlLiteralTextAdapter.cs
- UnicodeEncoding.cs
- DataServicePagingProviderWrapper.cs
- SqlIdentifier.cs
- ShaderEffect.cs
- HeaderedContentControl.cs
- UnknownBitmapEncoder.cs
- AtomPub10ServiceDocumentFormatter.cs
- AlternateViewCollection.cs
- DataColumn.cs
- ScriptResourceDefinition.cs
- DispatcherExceptionFilterEventArgs.cs
- TransformGroup.cs
- Serializer.cs
- BitmapMetadata.cs
- PeerApplicationLaunchInfo.cs
- FirstMatchCodeGroup.cs
- HtmlHead.cs
- ScrollBarAutomationPeer.cs
- IncomingWebResponseContext.cs
- TabRenderer.cs
- ErrorView.xaml.cs
- XmlnsPrefixAttribute.cs