I am sure that most you have read this in the MSDN documentation, it appears almost everywhere. Recently while brainstorming about a deadlock issue in our project someone raised this topic. ‘Public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe’, and claimed that all Framework type static instances are thread safe.
My opinion is this is bit misleading. This doesn't mean that all type in .NET framework are thread safe in static instance, nor that all static instance of any type is thread safe. If you think for a sec, nothing is thread safe by default, the author has to make a type thread safe, in this case MS has taken the time to verify that they are thread safe (which is very easy if they don't touch shared data). So it is your responsibility to make your class/type is thread safe.
I am sure MS is aware of this confusing statement. In old days it used to be only the two sentences in documentation (as above), but now you can see they are elaborating it bit more. Check here documentation for Array
And check this out, Thread Safety for TaskFactory says,
All public and protected members of TaskFactory are thread-safe and may be used concurrently from multiple threads
Hope that helps.
Rujith
Disclaimer Postings are provided as is with no warranties, and confer no rights. Opinions expressed here are my own delusions; my employers at best shake their heads and sigh, at worst repudiate the content with extreme prejudice, whenever it manages to appear on their radar.