Actually, you not only need thread functionality at the server, but some kind of a javascript asynchronous logic that would periodically ask for the progress of calculation. Otherwise the server is not able to send it.
You might be able to use some control library though, I think I have seen some fancy progress bars around. If you want to start from scratch, here a couple of tips :
At the server side, create a class with static variable / dictionary that will hold the progress and insert some points in the code where you write the progress into the variable. Create a web method which just starts a new thread and a second one that gives you back the progress. Optionally, you can make a cancel method which would set some flag that the worker method reads and throws an exception.
At client side, simply use some javascript library (Prototype, jQuery etc.) to fire AJAX callbacks to those methods. Simple visual representation could be a table like you said or maybe a simple div with a background for which you just set a percentage width, something like :
<div class="prog">
<div class="con">
<div class="bar" id="progressBar" style="width:0"></div>
</div>
</div>
with css styles
.prog
{ width:412px;height:18px !important;border:1px solid #ccc;
border-bottom-color:#ddd;border-right-color:#ddd;padding:0;
margin:0;float:left;display:inline;overflow:hidden; }
.prog .con
{ width:410px;height:16px !important;
background:transparent url("images/background.jpg") repeat-x 0 2px;
border:0;margin:0;padding:1px; text-align:left;
}
.prog .con .bar
{
height:16px;background:transparent url("images/background.jpg") repeat-x 0 -15px;
}
and in javascript where you need to set the progress
$('progressBar').style.width = new_progress;
In case you don't want to show the exact progress, you can use some animated progress indicators