To show actual progress you would need to get the status from the server and update the UI at client side. One way is to use HTTP Handlers and AJAX with jQuery.
1. Initiate InvoiceCreation
$("#btnCreateInvoice").click(function() {
$.ajax({ type: "POST", url: "YourHttpHandler.ashx",
contentType: "text/html; charset=utf-8",
dataType: "html",
success: function(data) { UpdateStatus-Initialize some progressbar plugin }
});
});
2. Polling
What next you need to do is to poll the server at 't' interval and get the status. For that we need to call a function at 't' interval that would initiate an AJAX call to a HTTPHandler to get the status.
$(function() {
setInterval(update, 't');
});
function updateStatus() {
$.ajax({ type: "POST", url: "GetStatusHandler.ashx",
contentType: "text/html; charset=utf-8",
dataType: "html",
success: function(data) { UpdateStatus - Update some progressbar plugin }
});
}
3. Server side Status Management
In your case there will be a situation where there can be multiple active invoices, so you would need to update/maintain status of all those records every AJAX request.
Also I am not sure you can use ASP.NET Server side progress bar controls with this technique since you would need to update them at client side.