Any code performed in UI thread eats away at the processing time required to maintain the message loop, which is basically windows event messages. So if you for example do something in UI thread (invoked from an UI event handler) that takes 5 seconds then no messages are processed during that time and UI does not update/respond and appears 'freezed'. When you say 'it still freezes a bit' when doing processing on secondary thread that could mean you are still doing some processing in UI thread unknowingly, or the CPU resources are exhausted for the PC (HttpWebRequest, or normal priority thread would not cause that). It could also be a combination where UI is crammed with controls with large content, perhaps with custom paint handling or other processing, lots of events happening etc.