Common Multithreading Mistakes in C# – Unsafe Assumptions
the biggest gotcha I&#x27;ve seen with C# multithreaded is the usage of the basic .NET Collections:  Dictionary&lt;K,V&gt; and List&lt;V&gt;<p>they will mostly work (like multiple threads reading, or 1 writes while another retrieves), except when two threads try to simultaneously write, or when 1 writes while another enumerates.<p>When that happens, all bets are off, and you will silently get obtuse errors such as null return values or enumerating past the end of the collection, or a corrupt collection that throws exceptions from other (seemingly) random and unrelated areas.<p>I believe the new concurrent collections take care of this, but it is still so easy for beginners to shoot themselves with async programming.  very much in stark contrast to how dev-friendly the rest of the CLR is.