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
- RectAnimationBase.cs
- CacheAxisQuery.cs
- ResourceFallbackManager.cs
- MultipleViewPattern.cs
- XmlSiteMapProvider.cs
- BoundPropertyEntry.cs
- Expression.cs
- DataAccessor.cs
- SessionStateUtil.cs
- InertiaExpansionBehavior.cs
- BitmapFrame.cs
- SettingsSavedEventArgs.cs
- ColumnWidthChangedEvent.cs
- FixedLineResult.cs
- MenuItemStyleCollection.cs
- NoPersistHandle.cs
- SchemaEntity.cs
- ImageAutomationPeer.cs
- Lease.cs
- CharacterBuffer.cs
- GlobalProxySelection.cs
- ToolStripGripRenderEventArgs.cs
- EntityDataSourceView.cs
- KnownTypeDataContractResolver.cs
- controlskin.cs
- WindowsHyperlink.cs
- CursorEditor.cs
- PixelShader.cs
- DataServiceQuery.cs
- ObjectTag.cs
- InteropAutomationProvider.cs
- PositiveTimeSpanValidatorAttribute.cs
- Preprocessor.cs
- UInt32Storage.cs
- TimeoutHelper.cs
- ProfileParameter.cs
- PageAsyncTask.cs
- FileSecurity.cs
- PropertyTabChangedEvent.cs
- HttpRawResponse.cs
- TypeSystem.cs
- SqlStream.cs
- DataBindingExpressionBuilder.cs
- TimeSpanOrInfiniteConverter.cs
- FormatException.cs
- XmlNodeList.cs
- EntityDataSourceChangingEventArgs.cs
- PermissionSetEnumerator.cs
- TextProperties.cs
- WebPartConnectionsCancelEventArgs.cs
- SecUtil.cs
- LinqToSqlWrapper.cs
- AlgoModule.cs
- OutputCacheModule.cs
- TextSegment.cs
- AutomationPattern.cs
- EndpointDiscoveryElement.cs
- IndexedString.cs
- DataGridLinkButton.cs
- HatchBrush.cs
- Events.cs
- SafeRegistryHandle.cs
- SearchExpression.cs
- EntityAdapter.cs
- MenuItemBindingCollection.cs
- EventDescriptorCollection.cs
- PropertyIDSet.cs
- Sql8ConformanceChecker.cs
- DefaultPropertyAttribute.cs
- StringUtil.cs
- FileLoadException.cs
- DataQuery.cs
- MetafileHeader.cs
- ViewLoader.cs
- Annotation.cs
- DataGridHeaderBorder.cs
- ImportCatalogPart.cs
- Encoding.cs
- DynamicDocumentPaginator.cs
- XPathExpr.cs
- HttpModulesSection.cs
- ScrollChrome.cs
- WebBrowserHelper.cs
- HostExecutionContextManager.cs
- VariantWrapper.cs
- IconConverter.cs
- KeyManager.cs
- SpinWait.cs
- AssemblyHelper.cs
- StyleSheetComponentEditor.cs
- MSHTMLHost.cs
- SessionStateUtil.cs
- ScaleTransform.cs
- Vector3DKeyFrameCollection.cs
- DateRangeEvent.cs
- ErrorsHelper.cs
- OledbConnectionStringbuilder.cs
- SerializationObjectManager.cs
- SqlDependencyUtils.cs
- PointAnimationClockResource.cs