На самом деле вам нужна не только функциональность потоков на сервере, но и какая-то асинхронная логика JavaScript, которая периодически запрашивала бы ход вычислений.В противном случае сервер не сможет отправить его.
Вы можете использовать некоторую библиотеку элементов управления;Я думаю, что я видел некоторые модные индикаторы прогресса вокруг.Если вы хотите начать с нуля, вот пара советов:
На стороне сервера создайте класс со статической переменной / словарем, в котором будет храниться прогресс, и вставьте несколько точек в код, в котором вы пишетепрогресс в переменную.Создайте веб-метод, который только начинает новый поток, и второй, который возвращает вам прогресс.При желании вы можете создать метод cancel, который установит некоторый флаг, который рабочий метод читает и выдает исключение.
На стороне клиента просто используйте некоторую библиотеку JavaScript ( Prototype , jQuery и т. д.) для запуска Ajax обратных вызовов к этим методам.Простым визуальным представлением может быть таблица, как вы сказали, или простой div с фоном, для которого вы просто устанавливаете процентную ширину, что-то вроде:
<div class="prog">
<div class="con">
<div class="bar" id="progressBar" style="width:0"></div>
</div>
</div>
со стилями CSS :
.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;
}
и в javascript , где вам нужно установить прогресс
$('progressBar').style.width = new_progress;
Если вы не хотите показывать точный прогресс, вы можете использоватьнекоторые анимированные индикаторы прогресса .