I am using SharpBITS (http://sharpbits.codeplex.com/), a well running BITS wrapper for .NET. I am not quite sure but reckon that BITS must run in a Single Thread Apartment (STA). With older versions I had some problems when running BITS in a Multi Threaded Apartment (MTA) which is for example default for .NET console applications. I do not find anything about that in the BITS documentation or on the Internet.
Even SharpBITS tries to set the apartment state in the constructor of BitsManager to STA (what actually would only be possible before a thread is started).
Does someone know if BITS really must run in an STA? The currrent version seems to run as well in a MTA.