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
- XmlDownloadManager.cs
- Utils.cs
- ValidationErrorEventArgs.cs
- StructureChangedEventArgs.cs
- SiteMapDesignerDataSourceView.cs
- Vector3D.cs
- RemoteArgument.cs
- BamlWriter.cs
- FileLogRecordEnumerator.cs
- DataGridViewRowEventArgs.cs
- IsolatedStorageException.cs
- TransportSecurityProtocolFactory.cs
- ThemeInfoAttribute.cs
- AuthorizationSection.cs
- XdrBuilder.cs
- listitem.cs
- DoubleAnimationUsingKeyFrames.cs
- Command.cs
- ConstraintCollection.cs
- UIElement3D.cs
- ExceptionWrapper.cs
- GradientStop.cs
- DataKeyArray.cs
- ToolStripKeyboardHandlingService.cs
- PartialTrustHelpers.cs
- StylusEventArgs.cs
- CommandEventArgs.cs
- Reference.cs
- ReachFixedDocumentSerializer.cs
- ContractBase.cs
- SimpleWorkerRequest.cs
- MatrixKeyFrameCollection.cs
- ApplicationActivator.cs
- DataControlButton.cs
- DataRowView.cs
- CollectionBase.cs
- SystemIPInterfaceStatistics.cs
- DataGridViewDesigner.cs
- WindowsAuthenticationModule.cs
- UndoManager.cs
- TreeNodeSelectionProcessor.cs
- SpellCheck.cs
- SQLDoubleStorage.cs
- ResourceManagerWrapper.cs
- XmlEntityReference.cs
- initElementDictionary.cs
- ZipIOFileItemStream.cs
- ServiceMoniker.cs
- IntegerValidatorAttribute.cs
- DescendentsWalkerBase.cs
- RepeaterItem.cs
- XmlCDATASection.cs
- RuntimeWrappedException.cs
- WebPartChrome.cs
- OrderingInfo.cs
- TextEditorTyping.cs
- EndpointInfoCollection.cs
- DataServiceContext.cs
- sqlnorm.cs
- CompiledQuery.cs
- XmlChildEnumerator.cs
- CompositeDispatchFormatter.cs
- FrameworkEventSource.cs
- SpecialFolderEnumConverter.cs
- QilPatternFactory.cs
- SqlUdtInfo.cs
- PriorityQueue.cs
- MbpInfo.cs
- MatrixStack.cs
- DataGridViewComboBoxCell.cs
- _LocalDataStore.cs
- MimeMultiPart.cs
- EventsTab.cs
- SQLBoolean.cs
- DateTimeSerializationSection.cs
- HttpCachePolicy.cs
- DispatcherProcessingDisabled.cs
- TrailingSpaceComparer.cs
- InvalidProgramException.cs
- DataGridViewCellCancelEventArgs.cs
- WindowsSlider.cs
- ScrollableControl.cs
- GroupItem.cs
- DataObjectMethodAttribute.cs
- Setter.cs
- XmlSerializerFactory.cs
- DesignSurfaceManager.cs
- StateMachineSubscriptionManager.cs
- Variable.cs
- UpdatePanel.cs
- RequestTimeoutManager.cs
- InternalConfigEventArgs.cs
- ConstraintCollection.cs
- CloudCollection.cs
- ObjectQuery_EntitySqlExtensions.cs
- RotateTransform3D.cs
- FrameworkTemplate.cs
- QilParameter.cs
- TagPrefixInfo.cs
- SqlClientPermission.cs