На самом деле вам не только нужны функции потока на сервере, но и какая-то асинхронная логика JavaScript, которая периодически запрашивает ход расчета. В противном случае сервер не сможет отправить его.
Возможно, вам удастся использовать некоторую библиотеку управления; Кажется, я видел некоторые фантазии о барах. Если вы хотите начать с нуля, вот несколько советов:
На стороне сервера создайте класс со статической переменной/словарем, который будет удерживать прогресс и вставить некоторые моменты в код, в котором вы пишете прогресс в переменную. Создайте веб-метод, который только начинает новый поток, и второй, который возвращает вам прогресс. Необязательно, вы можете сделать метод отмены, который установил бы некоторый флаг, который рабочий метод читает и выдает исключение.
На стороне клиента просто используйте библиотеку JavaScript (Prototype, jQuery и т. Д.), Чтобы запустить Ajax обратные вызовы этим методам. Простое визуальное представление может быть таблица, как вы сказали, или, может быть, просто ДИВ с фоном, для которого вы только что установили процентную ширину, что-то вроде:
<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;
в случае, если вы не хотите, чтобы показать точный прогресс, вы можете использовать некоторые animated progress indicators.
Вещь ... мне просто нужен бар, который продолжает меняться. Он может увеличивать 0-100-0-100 ... таким образом. То есть, это не должно быть точно такое же процентное увеличение. Даже пользовательский элемент управления, который делает то же самое с некоторым javascript, сделает для меня. – anish
Значит, вам просто нужна анимация? Тогда почему бы вам не использовать некоторые анимированного GIF;) –
:) ... не анимация ... Я думаю, я могу использовать ур код ... с небольшим изменением, как показано ниже: в то время как (истина) { int new_progress = 0; $ ('progressBar'). Стиль.width = new_progress ++; if (new_progress == 100) { new_progress = 0; } } что вы думаете? – anish