Как установить значение серверных элементов управления из потока в веб-приложении C #? - PullRequest
0 голосов
/ 24 ноября 2011

У меня на моей веб-странице есть долго работающий поток событий нажатия кнопки

var thread = new Thread(StartTaskMonitoring);
thread.Start();

В методе 'StartTaskMonitoring' я запускаю цикл while, который зависит от логической переменной _StopMonitoring

Другая кнопка «Стоп», которая сбрасывает переменную _StopMonitoring, которая останавливает событие кнопки пуска.

Но проблема в том, что когда я выполняю поток, я не могу обновить пользовательский интерфейс - скажем, я хочу обновитьтекстовое поле в методе StartTaskMonitoring.Или это может быть индикатор выполнения.

Уже протестирован Updatpanel1.Update().Это не помогаетТакже не удается получить сеансы из потока.

Как мне этого добиться?так что интерфейс обновляется.

Ответы [ 3 ]

0 голосов
/ 24 ноября 2011

С фоновыми потоками дело в том, что они могут запускаться даже после того, как HTTP-запрос завершится и отобразит страницу для пользователя. Так что говорить об изменении пользовательского интерфейса в потоках не имеет смысла. Вы можете оформить следующую статью .

0 голосов
/ 24 ноября 2011

Если вы запускаете процесс, который занимает очень много времени, то я думаю, что ваш единственный способ продвинуться вперед - это запустить процесс как не-веб-приложение, предпочтительно как службу, и запросить его для получения информации, используя вызовы AJAX из ваше веб-приложение.

Вам потребуется обеспечить некоторый контроль внутри службы, чтобы справиться с многочисленными требованиями к обработке из одного и того же сеанса, а также что делать, если сеанс истекает до завершения потока.

0 голосов
/ 24 ноября 2011

В веб-приложении, после того как запрос был выполнен сервером (все данные отправлены клиенту), сервер не может ничего изменить без каких-либо действий со стороны клиента.

Код на сервере не имеетМеханизм для отправки дополнительных данных клиенту, который будет изменять отображение, единственный механизм для клиента, чтобы отправить запрос на сервер 1 .Клиент может отправлять запросы (по таймеру или в ответ на действие пользователя) на данные, а затем обрабатывать новую информацию для обновления пользовательского интерфейса (это «AJAX»).


1 В будущем Web Sockets обеспечит более простой подход, но для этого все еще требуется код на клиенте для обработки сообщений с сервера.

...