If you can create a page method that exposes the progress, you can do this via a polling ajax call, something like this:
ASP.Net page side:
[WebMethod]
public static string GetProgress()
{
//Put progress logic here, whatever you need to return/display
return "Still processing";
//When finished: return "All Done!";
}
jQuery side:
function updateProgress() {
$.ajax({
type: "POST",
url: "MyPage.aspx/GetProgress",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
$("#statusMsg").text(msg); //Display the message
if (msg !== "All Done!") //Stop looping when your "completed" comes back
setTimeout(updateProgress, 1000); //Update status again in 1 second
}
});
}
In whatever method you are kicking things off, just call updateProgress() at the end. This is a very lightweight way of doing things, you're making a simple http request sending very little data, not viewstate and all that, and getting back only the response you want.