Can I use threads to carry out long-running jobs on IIS?

In an ASP.Net application, the user clicks a button on the webpage and this then instantiates an object on the server through the event handler and calls a method on the object.
The method goes off to an external system to do stuff and this could take a while. So, what I would like to do is run that method call in another thread so I can return control to the user with “Your request has been submitted”.
I am reasonably happy to do this as fire-and-forget, though it would be even nicer if the user could keep polling the object for status.

Run async method regularly with specified interval

I need to publish some data to the service from the C# web application. The data itself is collected when user uses the application (a kind of usage statistics). I don’t want to send data to the service during each user’s request, I would rather collect the data in the app and send then all the data in a single request in a separate thread, that does not serve the users requests (I mean user does not have to wait for the request to be processed by the service). For this purpose I need a kind of JS’s setInterval analog – the launch of the function each X seconds to flush all collected data to the service.

Using ThreadPool.QueueUserWorkItem in ASP.NET in a high traffic scenario

I’ve always been under the impression that using the ThreadPool for (let’s say non-critical) short-lived background tasks was considered best practice, even in ASP.NET, but then I came across this article that seems to suggest otherwise – the argument being that you should leave the ThreadPool to deal with ASP.NET related requests.