This documentation is archived and is not being maintained.

NameObjectCollectionBase.System.Collections.ICollection.IsSynchronized Property

Note: This namespace, class, or member is supported only in version 1.1 of the .NET Framework.

Gets a value indicating whether access to the NameObjectCollectionBase is synchronized (thread-safe).

[Visual Basic]
Private ReadOnly Property IsSynchronized As Boolean Implements _
bool ICollection.IsSynchronized {get;}
private: __property bool
private function get ICollection.IsSynchronized() : Boolean;

Property Value

true if access to the NameObjectCollectionBase is synchronized (thread-safe); otherwise, false. The default is false.


A NameObjectCollectionBase instance is not synchronized. Derived classes can provide a synchronized version of the NameObjectCollectionBase using the SyncRoot property.

Enumerating through a collection is intrinsically not a thread-safe procedure. Even when a collection is synchronized, other threads could still modify the collection, which causes the enumerator to throw an exception. To guarantee thread safety during enumeration, you can either lock the collection during the entire enumeration or catch the exceptions resulting from changes made by other threads.

[Visual Basic, C#] The following code example shows how to lock the collection using the SyncRoot during the entire enumeration:

NameObjectCollectionBase myCollection = new NameObjectCollectionBase();
 lock( myCollection.SyncRoot ) {
 foreach ( Object item in myCollection ) {
 // Insert your code here.
[Visual Basic] 
Dim myCollection As New NameObjectCollectionBase()
Dim item As Object
SyncLock myCollection.SyncRoot
 For Each item In myCollection
 ' Insert your code here.
 Next item
End SyncLock


Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family

See Also

NameObjectCollectionBase Class | NameObjectCollectionBase Members | System.Collections.Specialized Namespace | SyncRoot