I read from < Essential ASP.NET with Examples in C# > the following statement:
Another useful property to know about is the static Current property
The backing field of Current is marked as ThreadStatic (I assume), hence it wont be available/initialized in user-created threads.
What it comes down to is, that you should capture the instance of HttpContext.Current in the request thread and then use that instance in your threads, instead of referring to HttpContext.Current.