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
- MsmqDecodeHelper.cs
- GuidelineSet.cs
- GridViewUpdatedEventArgs.cs
- AsyncResult.cs
- HMACSHA256.cs
- XsltFunctions.cs
- StreamSecurityUpgradeProvider.cs
- BuildProviderCollection.cs
- StrongNameSignatureInformation.cs
- OdbcConnection.cs
- OleCmdHelper.cs
- CanonicalFontFamilyReference.cs
- WebConfigurationHostFileChange.cs
- wgx_commands.cs
- QueryOperationResponseOfT.cs
- TriggerAction.cs
- HtmlElement.cs
- TableCellsCollectionEditor.cs
- EntityChangedParams.cs
- WindowInteropHelper.cs
- GeometryHitTestResult.cs
- _ConnectStream.cs
- ReaderWriterLockWrapper.cs
- ImportCatalogPart.cs
- DependentList.cs
- Panel.cs
- TextRangeEditLists.cs
- RequestChannel.cs
- HtmlToClrEventProxy.cs
- SqlConnectionFactory.cs
- SafeMemoryMappedViewHandle.cs
- SimplePropertyEntry.cs
- NaturalLanguageHyphenator.cs
- FacetDescriptionElement.cs
- HttpWebRequest.cs
- SizeChangedInfo.cs
- BreakRecordTable.cs
- InputBuffer.cs
- AssemblyResourceLoader.cs
- SelectedGridItemChangedEvent.cs
- MutexSecurity.cs
- OdbcConnection.cs
- CollectionBuilder.cs
- UInt64Converter.cs
- List.cs
- DataBoundControlAdapter.cs
- StackSpiller.Temps.cs
- ServiceKnownTypeAttribute.cs
- EqualityComparer.cs
- SqlConnectionPoolProviderInfo.cs
- SHA512Cng.cs
- RoleService.cs
- sqlmetadatafactory.cs
- MeasureData.cs
- Int32RectConverter.cs
- ProxyElement.cs
- ThreadStartException.cs
- QueryResponse.cs
- AnnotationService.cs
- DataMember.cs
- TextDataBindingHandler.cs
- WebMessageEncoderFactory.cs
- XmlILStorageConverter.cs
- DataGridViewComboBoxCell.cs
- InvalidCardException.cs
- ViewPort3D.cs
- ToolBarButton.cs
- CodeDOMUtility.cs
- SqlBulkCopyColumnMappingCollection.cs
- BaseParser.cs
- MenuScrollingVisibilityConverter.cs
- PersonalizablePropertyEntry.cs
- CheckBoxPopupAdapter.cs
- PointUtil.cs
- COSERVERINFO.cs
- BaseConfigurationRecord.cs
- CreateInstanceBinder.cs
- Preprocessor.cs
- RoleService.cs
- ProfileSettings.cs
- ReflectEventDescriptor.cs
- DispatcherHookEventArgs.cs
- DesignerActionTextItem.cs
- COM2TypeInfoProcessor.cs
- BaseServiceProvider.cs
- Attributes.cs
- Enlistment.cs
- DelayedRegex.cs
- WorkflowMessageEventArgs.cs
- login.cs
- ControlBindingsConverter.cs
- WindowAutomationPeer.cs
- MenuCommands.cs
- PolicyManager.cs
- SubpageParaClient.cs
- BinaryConverter.cs
- ButtonFieldBase.cs
- RequestSecurityTokenResponse.cs
- EncoderParameters.cs
- HostingEnvironmentSection.cs