Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- WebPartVerbsEventArgs.cs
- ComboBox.cs
- MappingSource.cs
- EntityDataSourceSelectedEventArgs.cs
- WCFBuildProvider.cs
- Point4DConverter.cs
- NavigationExpr.cs
- DisplayInformation.cs
- Utils.cs
- ApplicationException.cs
- InfoCardRSAOAEPKeyExchangeFormatter.cs
- ISCIIEncoding.cs
- ProcessHostMapPath.cs
- NameValueCollection.cs
- EmptyCollection.cs
- BindingExpressionUncommonField.cs
- SimpleApplicationHost.cs
- DnsElement.cs
- InputProcessorProfilesLoader.cs
- assemblycache.cs
- Facet.cs
- VBIdentifierName.cs
- RectValueSerializer.cs
- Label.cs
- JsonDeserializer.cs
- ChannelToken.cs
- CompiledQueryCacheEntry.cs
- _Connection.cs
- XamlParser.cs
- TextEditorParagraphs.cs
- Bezier.cs
- PropertyInformationCollection.cs
- CurrentChangedEventManager.cs
- GroupBoxAutomationPeer.cs
- ExtractedStateEntry.cs
- TextPointerBase.cs
- ByteRangeDownloader.cs
- EntityFunctions.cs
- AnnotationResource.cs
- SystemIPInterfaceProperties.cs
- FactoryRecord.cs
- Int32CollectionValueSerializer.cs
- RawStylusActions.cs
- DataColumnCollection.cs
- CompoundFileDeflateTransform.cs
- XmlSerializerSection.cs
- VirtualDirectoryMapping.cs
- CollectionChangedEventManager.cs
- WithStatement.cs
- IsolationInterop.cs
- StringExpressionSet.cs
- TransformGroup.cs
- ClusterSafeNativeMethods.cs
- GroupBox.cs
- ChtmlCommandAdapter.cs
- FormView.cs
- FaultImportOptions.cs
- BamlTreeMap.cs
- XmlReader.cs
- WinEventTracker.cs
- TreeViewEvent.cs
- UIElement3D.cs
- infer.cs
- CompilationSection.cs
- HashAlgorithm.cs
- TdsValueSetter.cs
- DataStorage.cs
- OracleMonthSpan.cs
- SystemIcons.cs
- SourceLineInfo.cs
- RepeaterItemEventArgs.cs
- ScriptManagerProxy.cs
- Crc32Helper.cs
- TextWriter.cs
- GetImportedCardRequest.cs
- ToolStripOverflowButton.cs
- TagNameToTypeMapper.cs
- NativeActivityContext.cs
- NumberSubstitution.cs
- IgnoreSectionHandler.cs
- TableCellCollection.cs
- XmlCodeExporter.cs
- SqlTypesSchemaImporter.cs
- ModelTreeManager.cs
- SafeTimerHandle.cs
- XXXInfos.cs
- GlyphsSerializer.cs
- RadioButtonRenderer.cs
- FloatMinMaxAggregationOperator.cs
- ErrorHandler.cs
- TypefaceMap.cs
- ClientBuildManagerCallback.cs
- XamlGridLengthSerializer.cs
- HandledMouseEvent.cs
- XmlQuerySequence.cs
- EnumUnknown.cs
- PeerApplication.cs
- RTLAwareMessageBox.cs
- CultureTableRecord.cs
- XmlDataSource.cs