Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- Content.cs
- MenuItemStyle.cs
- PageAsyncTask.cs
- _AutoWebProxyScriptEngine.cs
- DateTimeFormatInfoScanner.cs
- securestring.cs
- HtmlInputCheckBox.cs
- BitmapEffectState.cs
- PersistenceContextEnlistment.cs
- TableAdapterManagerGenerator.cs
- _IPv6Address.cs
- EntitySetRetriever.cs
- COM2PropertyBuilderUITypeEditor.cs
- DbDataReader.cs
- RandomNumberGenerator.cs
- MenuItemBindingCollection.cs
- Canvas.cs
- DefaultPropertyAttribute.cs
- SqlNodeAnnotations.cs
- MemberMemberBinding.cs
- ThemeInfoAttribute.cs
- XmlValueConverter.cs
- AutomationFocusChangedEventArgs.cs
- RegistryExceptionHelper.cs
- ApplicationInfo.cs
- InOutArgument.cs
- FlowDocumentPage.cs
- SqlDependency.cs
- EditBehavior.cs
- PlaceHolder.cs
- SqlInfoMessageEvent.cs
- AutomationPeer.cs
- loginstatus.cs
- PerformanceCounterCategory.cs
- CryptoKeySecurity.cs
- DWriteFactory.cs
- Context.cs
- MediaElement.cs
- HandlerBase.cs
- RegistryConfigurationProvider.cs
- Queue.cs
- EncoderParameters.cs
- URLMembershipCondition.cs
- DrawingContextWalker.cs
- MD5.cs
- SqlMetaData.cs
- XmlReflectionImporter.cs
- RequestCache.cs
- CheckBoxStandardAdapter.cs
- QueryableFilterUserControl.cs
- PropertyGridEditorPart.cs
- _ConnectStream.cs
- ComponentDispatcherThread.cs
- odbcmetadatacolumnnames.cs
- XmlCharCheckingWriter.cs
- AmbientProperties.cs
- Matrix.cs
- System.Data.OracleClient_BID.cs
- BuildResult.cs
- Point3D.cs
- Parameter.cs
- DateTimeFormatInfoScanner.cs
- BaseParser.cs
- counter.cs
- ClientBuildManagerCallback.cs
- Crc32.cs
- Span.cs
- DataBindEngine.cs
- ExpressionCopier.cs
- FormClosedEvent.cs
- OleDragDropHandler.cs
- TraceHandler.cs
- XmlTextAttribute.cs
- XmlSchemaIdentityConstraint.cs
- ScriptMethodAttribute.cs
- KeyMatchBuilder.cs
- ScrollBarAutomationPeer.cs
- AppDomainUnloadedException.cs
- GetWinFXPath.cs
- LocalizationParserHooks.cs
- Brushes.cs
- MultiTrigger.cs
- GeometryConverter.cs
- Operators.cs
- TaskSchedulerException.cs
- ImageMapEventArgs.cs
- DataGridAddNewRow.cs
- GridViewActionList.cs
- ErrorEventArgs.cs
- TransformCryptoHandle.cs
- CloudCollection.cs
- MetaForeignKeyColumn.cs
- RuntimeConfigLKG.cs
- _AutoWebProxyScriptHelper.cs
- PropertyToken.cs
- CodeNamespaceImport.cs
- datacache.cs
- RectAnimationBase.cs
- DiagnosticTraceSource.cs
- SessionEndingEventArgs.cs