If you are building a Compact Framework application, and you create different instances of HttpWebRequest on different threads, you might run into problems. In particular, if the top of the stack has a variable of type HttpWebRequest and you call Thread.Sleep(), then other threads may not be able to use instances of HttpWebRequest. Make sure to do the Thread.Sleep() in the calling method, after that variable has left scope so that it can be garbage collected. This will allow for multiple threads to create these object instances.