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
- EasingKeyFrames.cs
- webproxy.cs
- AsnEncodedData.cs
- LocatorBase.cs
- Registry.cs
- SqlOuterApplyReducer.cs
- ParameterBuilder.cs
- ActivationServices.cs
- CharAnimationUsingKeyFrames.cs
- TagMapCollection.cs
- RemotingAttributes.cs
- GridItemPatternIdentifiers.cs
- SettingsAttributes.cs
- DefaultSerializationProviderAttribute.cs
- PropertyDescriptor.cs
- WebPartZoneBaseDesigner.cs
- SoapClientProtocol.cs
- ComplexLine.cs
- PolyLineSegment.cs
- DataTableCollection.cs
- PanelDesigner.cs
- FileDialogCustomPlace.cs
- IfAction.cs
- ASCIIEncoding.cs
- TabControlCancelEvent.cs
- MetafileEditor.cs
- XmlIlTypeHelper.cs
- MultipleViewPattern.cs
- Semaphore.cs
- EncryptedType.cs
- ImageFormat.cs
- JsonDataContract.cs
- ToolStripComboBox.cs
- CultureTableRecord.cs
- TypeGeneratedEventArgs.cs
- ButtonBase.cs
- ClientSponsor.cs
- XmlWellformedWriter.cs
- TimeSpanValidator.cs
- DBSqlParser.cs
- Fonts.cs
- CacheForPrimitiveTypes.cs
- TransformPattern.cs
- ObjectStateEntryOriginalDbUpdatableDataRecord.cs
- FrugalList.cs
- PageClientProxyGenerator.cs
- IIS7UserPrincipal.cs
- DataServiceEntityAttribute.cs
- InfoCardHelper.cs
- SelectionRangeConverter.cs
- CssStyleCollection.cs
- Enlistment.cs
- NativeMethods.cs
- Marshal.cs
- HttpModulesSection.cs
- BindingListCollectionView.cs
- ConfigurationConverterBase.cs
- CodeObjectCreateExpression.cs
- QueueProcessor.cs
- TrackingMemoryStreamFactory.cs
- SystemInfo.cs
- ScrollBarRenderer.cs
- PropagatorResult.cs
- Mouse.cs
- unsafeIndexingFilterStream.cs
- KeyValueSerializer.cs
- OdbcUtils.cs
- XmlSchemaSet.cs
- PrintDialog.cs
- PropertyGridEditorPart.cs
- MsmqMessageSerializationFormat.cs
- IsolatedStorageFile.cs
- AmbientLight.cs
- IntSecurity.cs
- SendKeys.cs
- StylusOverProperty.cs
- ActivityPreviewDesigner.cs
- InfoCardBaseException.cs
- CharKeyFrameCollection.cs
- MediaPlayerState.cs
- RepeatButtonAutomationPeer.cs
- XPathNodeList.cs
- ObjectKeyFrameCollection.cs
- CrossAppDomainChannel.cs
- ViewLoader.cs
- IdentityReference.cs
- AtlasWeb.Designer.cs
- ConfigXmlCDataSection.cs
- SerializationEventsCache.cs
- MatrixCamera.cs
- XpsFilter.cs
- IDReferencePropertyAttribute.cs
- TableItemProviderWrapper.cs
- LocatorPart.cs
- TemplateBuilder.cs
- WorkflowMessageEventArgs.cs
- CheckBoxDesigner.cs
- Frame.cs
- AnnotationResourceCollection.cs
- followingsibling.cs