Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XamlSerializerUtil.cs
- _ListenerRequestStream.cs
- FlowLayoutPanelDesigner.cs
- Attributes.cs
- CodeThrowExceptionStatement.cs
- SHA384Managed.cs
- StrokeNode.cs
- ClientEventManager.cs
- Number.cs
- securitycriticaldata.cs
- unsafenativemethodstextservices.cs
- ResXResourceWriter.cs
- autovalidator.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- RoutedEventValueSerializer.cs
- TemplateControl.cs
- COM2IVsPerPropertyBrowsingHandler.cs
- HebrewCalendar.cs
- EventDescriptorCollection.cs
- Label.cs
- Translator.cs
- TabPanel.cs
- SystemIPGlobalProperties.cs
- ConfigurationLockCollection.cs
- WebPageTraceListener.cs
- StackBuilderSink.cs
- EndPoint.cs
- DetailsViewInsertedEventArgs.cs
- QilSortKey.cs
- X509InitiatorCertificateClientElement.cs
- OleDbCommand.cs
- smtppermission.cs
- SecurityTokenRequirement.cs
- InternalRelationshipCollection.cs
- UIElementAutomationPeer.cs
- CellParagraph.cs
- NotEqual.cs
- Geometry3D.cs
- SymDocumentType.cs
- RewritingPass.cs
- PTManager.cs
- PropertyCollection.cs
- TextBox.cs
- UnsafeNativeMethodsCLR.cs
- Attributes.cs
- TransformValueSerializer.cs
- ReferentialConstraintRoleElement.cs
- ListDesigner.cs
- MimePart.cs
- Registry.cs
- DataGridViewCell.cs
- UmAlQuraCalendar.cs
- OracleCommandSet.cs
- BooleanSwitch.cs
- CollectionTraceRecord.cs
- QuaternionAnimation.cs
- DataGridComboBoxColumn.cs
- ActivityScheduledQuery.cs
- WebBrowserNavigatingEventHandler.cs
- xmlNames.cs
- ByteConverter.cs
- QuaternionAnimationBase.cs
- GridItemCollection.cs
- ExtensionSurface.cs
- ListBox.cs
- ResolveRequestResponseAsyncResult.cs
- documentsequencetextpointer.cs
- FlowDocumentScrollViewerAutomationPeer.cs
- TransactionsSectionGroup.cs
- figurelength.cs
- CodeSubDirectory.cs
- MetadataCacheItem.cs
- XmlDigitalSignatureProcessor.cs
- WpfSharedBamlSchemaContext.cs
- DataViewListener.cs
- DynamicDataRouteHandler.cs
- SerializerDescriptor.cs
- RequestNavigateEventArgs.cs
- XmlNotation.cs
- MarshalByValueComponent.cs
- RunClient.cs
- AudienceUriMode.cs
- ProviderCommandInfoUtils.cs
- SpeechEvent.cs
- UnsafeNetInfoNativeMethods.cs
- BuildProvider.cs
- Dictionary.cs
- BidPrivateBase.cs
- WebPartAuthorizationEventArgs.cs
- MethodBuilderInstantiation.cs
- RegexGroupCollection.cs
- PersonalizationProviderHelper.cs
- ApplicationSecurityManager.cs
- ExternalDataExchangeService.cs
- FormDesigner.cs
- CounterSampleCalculator.cs
- SqlTrackingWorkflowInstance.cs
- DataPointer.cs
- OledbConnectionStringbuilder.cs
- ObjectViewListener.cs