Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Drawing.cs
- StoreConnection.cs
- TransactionManager.cs
- RequestSecurityToken.cs
- XmlNamespaceManager.cs
- RegexMatch.cs
- WebPartVerbsEventArgs.cs
- ConfigurationSectionGroupCollection.cs
- BitmapPalette.cs
- AdornedElementPlaceholder.cs
- DataGridViewRowCollection.cs
- ByteStorage.cs
- PageStatePersister.cs
- ImageBrush.cs
- AppModelKnownContentFactory.cs
- FragmentQueryProcessor.cs
- CommonXSendMessage.cs
- ActiveDocumentEvent.cs
- Attribute.cs
- CustomExpression.cs
- UriTemplateLiteralQueryValue.cs
- PropertyTab.cs
- GridViewRow.cs
- Util.cs
- HitTestResult.cs
- SoapIgnoreAttribute.cs
- SocketElement.cs
- EntityDesignerBuildProvider.cs
- MissingFieldException.cs
- FlowDocumentScrollViewer.cs
- RenderContext.cs
- ValueHandle.cs
- Module.cs
- XmlBaseReader.cs
- RemotingAttributes.cs
- TextCompositionEventArgs.cs
- XmlSchemaObjectCollection.cs
- MarshalByRefObject.cs
- DbConnectionStringBuilder.cs
- UnsafeNativeMethods.cs
- XmlSchemaSimpleContentRestriction.cs
- ArrayTypeMismatchException.cs
- HyperLinkStyle.cs
- JsonReaderWriterFactory.cs
- PropertyGridEditorPart.cs
- DataBindEngine.cs
- CheckPair.cs
- Main.cs
- UserPreferenceChangingEventArgs.cs
- XmlLanguage.cs
- VariableBinder.cs
- Int64Converter.cs
- AssemblyResolver.cs
- JsonReader.cs
- DrawingContextWalker.cs
- UpdatePanel.cs
- ForEachAction.cs
- WebEvents.cs
- TextServicesProperty.cs
- CompositeClientFormatter.cs
- TemplateControlParser.cs
- TableLayoutSettingsTypeConverter.cs
- QilPatternFactory.cs
- WebConfigurationHostFileChange.cs
- VirtualPathProvider.cs
- Enumerable.cs
- PrintDialog.cs
- LinqDataSourceView.cs
- DllNotFoundException.cs
- externdll.cs
- DtrList.cs
- TimeStampChecker.cs
- XPathPatternParser.cs
- LambdaCompiler.Address.cs
- LicFileLicenseProvider.cs
- DoubleLinkListEnumerator.cs
- AngleUtil.cs
- ManagedCodeMarkers.cs
- GridViewPageEventArgs.cs
- DaylightTime.cs
- KeyValueInternalCollection.cs
- WSHttpBindingBase.cs
- Graphics.cs
- ChtmlPageAdapter.cs
- IERequestCache.cs
- ToolStripLocationCancelEventArgs.cs
- EventManager.cs
- AdRotator.cs
- CrossAppDomainChannel.cs
- EncryptedPackage.cs
- RuntimeHelpers.cs
- DbProviderFactoriesConfigurationHandler.cs
- IndexerHelper.cs
- SHA384CryptoServiceProvider.cs
- RecipientInfo.cs
- OciHandle.cs
- CachedFontFamily.cs
- StorageFunctionMapping.cs
- TraceRecords.cs
- MemberMemberBinding.cs