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
- SafeCryptHandles.cs
- ChangeConflicts.cs
- AlternationConverter.cs
- ResourcesBuildProvider.cs
- ContentDefinition.cs
- PackageDigitalSignatureManager.cs
- RuntimeResourceSet.cs
- OrthographicCamera.cs
- OrderedEnumerableRowCollection.cs
- PeerNeighborManager.cs
- ListItemsPage.cs
- CustomSignedXml.cs
- ColorTypeConverter.cs
- FilterEventArgs.cs
- ExpressionBindingCollection.cs
- OleDbException.cs
- LogicalTreeHelper.cs
- Empty.cs
- ExpressionVisitorHelpers.cs
- WebUtility.cs
- SrgsRuleRef.cs
- PeerApplicationLaunchInfo.cs
- TypeSystemHelpers.cs
- TemplateAction.cs
- Manipulation.cs
- Model3DGroup.cs
- TraceLevelStore.cs
- LayoutInformation.cs
- IRCollection.cs
- Grant.cs
- SecurityTokenProviderContainer.cs
- WebPartDeleteVerb.cs
- EntityAdapter.cs
- ReflectionTypeLoadException.cs
- DefaultValueAttribute.cs
- Menu.cs
- RoleGroupCollection.cs
- GacUtil.cs
- ParameterRefs.cs
- SourceFileInfo.cs
- MimeParameterWriter.cs
- ObservableCollection.cs
- ScriptingJsonSerializationSection.cs
- RoleGroup.cs
- DatasetMethodGenerator.cs
- Debug.cs
- SqlFacetAttribute.cs
- FrameworkContextData.cs
- ISessionStateStore.cs
- cookiecontainer.cs
- SHA512.cs
- ExpressionEditorSheet.cs
- XmlBoundElement.cs
- IdnMapping.cs
- KernelTypeValidation.cs
- ConfigurationSection.cs
- ProjectionPathSegment.cs
- BitmapEffectGroup.cs
- ReferenceEqualityComparer.cs
- DateTimeFormatInfoScanner.cs
- SqlExpander.cs
- WindowsIPAddress.cs
- _MultipleConnectAsync.cs
- ILGenerator.cs
- BrowserDefinition.cs
- OrthographicCamera.cs
- sqlser.cs
- XmlSchemaDatatype.cs
- MatrixValueSerializer.cs
- InkCollectionBehavior.cs
- CqlParser.cs
- ArrayEditor.cs
- XmlParserContext.cs
- Brush.cs
- HiddenField.cs
- ScrollChrome.cs
- WebPartTransformerCollection.cs
- IntegerValidatorAttribute.cs
- BitmapEncoder.cs
- InvalidWMPVersionException.cs
- CryptoProvider.cs
- AgileSafeNativeMemoryHandle.cs
- webeventbuffer.cs
- XmlSchemaImporter.cs
- WrappedReader.cs
- ProcessHost.cs
- WeakEventManager.cs
- Token.cs
- KnownTypes.cs
- XmlDataSourceNodeDescriptor.cs
- DataSourceView.cs
- Int32RectValueSerializer.cs
- HostUtils.cs
- IsolatedStorageFile.cs
- ProviderCommandInfoUtils.cs
- PlanCompilerUtil.cs
- SqlUserDefinedAggregateAttribute.cs
- MemoryRecordBuffer.cs
- AnimationException.cs
- DirectoryObjectSecurity.cs