【发布时间】:2013-12-30 18:24:27
【问题描述】:
当从另一个静态 void 更改静态 int 值时,我正在尝试更改表单标签的文本值 (frmWebInput.ConnectedUserCount.Text)...
基本上:这是一个简单的网络服务器,我试图在提供每个页面时跟踪连接的用户。它似乎可以工作,但表单标签并没有改变?
/**
* @type int Total connected users.
*/
private static int _connectedUsers = 0;
public static int connectedUsers {
get { return _connectedUsers; }
set
{
_connectedUsers = value;
frmWebInput MyForm = new frmWebInput();
MyForm.ConnectedUserCount.Text = String.Format("Connected Users: {0}", value);
}
}
public static void clientListener()
{
while (true)
{
try
{
HttpListenerContext request = listener.GetContext();
ThreadPool.QueueUserWorkItem(processRequest, request);
}
catch (Exception e) { }
}
}
public static void processRequest(object listenerContext)
{
try
{
connectedUsers = connectedUsers + 1;
}
}
【问题讨论】:
-
每次设置静态时都会创建一个新表单。您在某处有对表单的静态引用吗?
-
这个应用程序是多线程的吗? (我假设是这样,因为 Web 服务器可能随时接收请求。)您需要添加锁定以正确保护静态值。