I have a batch process that runs on a background thread on an ASP.NET site. When that batch process runs I did not want the users to access specific features of the site. If you want to read more about running batch jobs from a website using ASP.NET and IIS read this post.

In order to do that I added a Boolean flag to the server cache for 10 minutes. When the users access a specific feature of the site it will check if the flag in the cache is set. If so the end user will be taken to a page that shows a “Batch Running” message (shown below using jQuery).
The “Batch Running” page will post back to the server every minute checking if the cache item exists. Once the cache item is gone the batch process page will redirect the user back to the feature that was offline.