Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Shared / MS / Internal / WeakReferenceEnumerator.cs / 1305600 / 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
- CommandConverter.cs
- ValidatorCollection.cs
- TraversalRequest.cs
- QuaternionRotation3D.cs
- ListManagerBindingsCollection.cs
- ThemeInfoAttribute.cs
- Base64WriteStateInfo.cs
- DataServiceRequestException.cs
- CellRelation.cs
- AppSettingsSection.cs
- EntryPointNotFoundException.cs
- DataSourceXmlSerializer.cs
- TabControl.cs
- SemanticAnalyzer.cs
- QueryResult.cs
- CodeIndexerExpression.cs
- KeyManager.cs
- SiteIdentityPermission.cs
- HostingEnvironment.cs
- DependencyObjectType.cs
- TypeInitializationException.cs
- DelimitedListTraceListener.cs
- WsatEtwTraceListener.cs
- CurrencyWrapper.cs
- DataGridLinkButton.cs
- PeerNearMe.cs
- QueryContinueDragEventArgs.cs
- StoryFragments.cs
- ServerIdentity.cs
- DataGridView.cs
- Scene3D.cs
- MemberCollection.cs
- ArrangedElement.cs
- PerfCounters.cs
- ChangeTracker.cs
- TransactionScope.cs
- Keywords.cs
- SynchronizationLockException.cs
- OleDbConnectionInternal.cs
- Site.cs
- FunctionQuery.cs
- Currency.cs
- Equal.cs
- Directory.cs
- HttpPostProtocolImporter.cs
- InputScopeAttribute.cs
- CompressionTransform.cs
- UrlAuthorizationModule.cs
- FilterQuery.cs
- HtmlMeta.cs
- CommentEmitter.cs
- ResourceDisplayNameAttribute.cs
- SymmetricSecurityBindingElement.cs
- CodeAttributeArgument.cs
- TextDecorationCollection.cs
- KeyEvent.cs
- NameValueSectionHandler.cs
- SqlAggregateChecker.cs
- MenuItemAutomationPeer.cs
- ASCIIEncoding.cs
- SharedConnectionListener.cs
- DataBinder.cs
- ValidationErrorInfo.cs
- ExpandSegment.cs
- DateTimeValueSerializerContext.cs
- ProtocolViolationException.cs
- GenericAuthenticationEventArgs.cs
- XmlDocument.cs
- ApplicationHost.cs
- XmlMembersMapping.cs
- ZipIOLocalFileHeader.cs
- MessageBodyMemberAttribute.cs
- DayRenderEvent.cs
- Helpers.cs
- Menu.cs
- WebConfigurationManager.cs
- SystemResourceKey.cs
- Parser.cs
- Tokenizer.cs
- ConnectionProviderAttribute.cs
- FormattedText.cs
- ReturnType.cs
- EditableRegion.cs
- SqlVisitor.cs
- JobCollate.cs
- hebrewshape.cs
- SiteMapNodeCollection.cs
- PopupRootAutomationPeer.cs
- TypeElement.cs
- SelectionEditor.cs
- FixedDocumentSequencePaginator.cs
- ScriptControlManager.cs
- EncodingTable.cs
- PerfService.cs
- SetStoryboardSpeedRatio.cs
- PropertyItem.cs
- SafeSystemMetrics.cs
- TableRow.cs
- CaseInsensitiveOrdinalStringComparer.cs
- BaseDataList.cs