title: Why SynchronizedCollection<T> does not lock on IEnumerable.GetEnumerator()
body: <p>Why <code>SynchronizedCollection&lt;T&gt;</code> does not acquire a lock on SyncObj in explicit implementation of  <code>IEnumerable.GetEnumerator()</code></p>
  
  <pre><code>  IEnumerator IEnumerable.GetEnumerator()
      {
          return this.items.GetEnumerator();
      }
  </code></pre>
  
  <p>Implicit implementation does acquire a lock on SyncOb (verified by reflector).</p>
  
  <p>It could be problem during foreach loop on this collection. One thread might have acquired a lock and the other could try to read it using foreach?</p>