title: Which features make a class to be thread-safe?
body: <p>In MSDN some .NET classes described like this:</p>
  
  <p>"<strong>This type is thread safe.</strong>" </p>
  
  <p>or </p>
  
  <p>"<strong>Public static (Shared in Visual Basic) members of this type are thread safe. Instance members are not guaranteed to be thread-safe.".</strong></p>
  
  <p>My question is which features make a class to be thread-safe?</p>
  
  <ul>
  <li><p>Is there any standard, recommendation or guidelines for thread-safety programming?</p></li>
  <li><p>When I use lock(C#) keyword, it means my class is thread-safe or not?</p></li>
  <li><p>How to I evaluate thread-safety of a class? Is there any TESTS to be sure that a class is 100% thread safe?</p></li>
  </ul>
  
  <p>Example:</p>
  
  <pre><code>public class MyClass
  {
      public void Method()
      {
          lock (this)
          {
              // Now, is my class 100% thread-safe like Microsoft classes?
          }
      }
      type m_member1;
      type m_member2;
  }
  </code></pre>
  
  <p>thanks</p>