2011-11-24 24 views
0

我在我的网页长时间运行的线程“StartTaskMonitoring”我运行一个while循环依赖于布尔变量_StopMonitoring如何在C#web应用程序中设置服务器控件的值?

另一个按钮“停止”按钮单击事件

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

在方法它重置使开始按钮事件停止的变量_StopMonitoring

但问题是,当我执行的线程,我无法更新UI - 说我要在StartTaskMonitoring方法来更新一个文本框。或者它可能是一个进度条。

已经测试Updatpanel1.Update()。它没有帮助。也不能从线程获取会话。

我该如何做到这一点?以便更新ui。

+0

您是否希望定期将UI更新从该线程推送到客户端的浏览器?这是行不通的。 –

+0

你如何构建你的ASP? – ChrisBD

回答

0

在Web应用程序中,一旦请求已经由服务器完成的(所有数据发送到客户端),而无需客户端的一些动作,服务器无法改变什么。

服务器上的代码没有机制向客户端发送更改显示的机制,唯一的机制是客户端向服务器发送请求。客户端可以发送请求(通过定时器或响应用户操作)数据,然后处理新信息以更新UI(这是“AJAX”)。


在未来的网络套接字将提供一个更简单的方法,但仍需要在客户端代码来处理来自服务器的消息。

+0

网页?这会教会我不要正确地阅读问题。 – ChrisBD

+0

@ChrisBD那和标签,否则它确实会是重复的:又一个“如何使用'BeginInvoke'”的问题。 – Richard

0

事情与后台线程是HTTP请求已经结束,并呈现在页面给用户后,他们甚至可以运行。所以谈论修改线程中的UI并不合理。您可以结帐following article

0

如果你正在运行一个过程,需要很长的时间,那么我认为,这里前进的唯一途径是已经运行的过程作为非Web应用程序,最好服务和轮询它使用AJAX调用的信息从你的网络应用程序。

你需要提供的服务中的一些控制,以应对来自同一个会话处理多种需求,也如果线程完成之前会话过期做什么。

相关问题