According to the documentation :
All public static (Shared in Visual Basic) members of this type are safe thread. Any instance members are not guaranteed to be safe threads.
So, you must ensure the correct lock if you want to share the same instance between multiple threads. But since the members of the CookieContainer class CookieContainer not actually processed by your code, but implicitly from the different HttpWebRequest instances that you created, it was not easy to synchronize them correctly, except, of course, blocking your requests, which, of course, are defeated by the goal and the level of parallelism, which I suppose you are trying to reach here.
In practice, you will have problems, this is another topic. The fact is that the documentation (and therefore the author) does not provide you with any guarantees.
source share