Click to Rate and Give Feedback
MSDN
MSDN Library
.NET Development
Previous Versions
.NET Framework 1.1
.NET Framework
 Collections and Synchronization (Th...
This page is specific to
Microsoft Visual Studio 2003/.NET Framework 1.1

Other versions are also available for the following:
.NET Framework Developer's Guide
Collections and Synchronization (Thread Safety)

By default, Collections classes are generally not thread safe. Multiple readers can read the collection with confidence; however, any modification to the collection produces undefined results for all threads that access the collection, including the reader threads.

Collections classes can be made thread safe using any of the following methods:

  • Create a thread-safe wrapper using the Synchronized method, and access the collection exclusively through that wrapper.
  • If the class does not have a Synchronized method, derive from the class and implement a Synchronized method using the SyncRoot property.
  • Use a locking mechanism, such as the lock statement in C# (SyncLock in Visual Basic), on the SyncRoot property when accessing the collection.

Only the Hashtable class guarantees thread safety, by default, when one writer and multiple readers simultaneously access the collection. It can be made thread-safe for multiple writers by using any of the methods above.

Array does not include a Synchronized method and, although it has a SyncRoot property, the class cannot be derived from. Therefore, an array can be made thread safe only through the locking mechanism.

When implementing the Synchronized method, derived classes must remember to override the IsReadOnly property to return the correct value.

See Also

Creating and Manipulating Collections | System.Collections Namespace | System.Collections.Specialized Namespace

© 2009 Microsoft Corporation. All rights reserved. Terms of Use | Trademarks | Privacy Statement
Page view tracker