如题:在asp.net项目中,创建一个页面,test.aspx,有一个按钮点击事件,里面创建一个Socket连接,这个连接一致存在,并不断的接收服务端推送过来的消息。在接收消息的地方定义一个委托,消息传递过来。
代码:
ERMS_Server erms_server;
protected void btn_Conn_Click(object sender, EventArgs e) {
string ip = this.txt_IP.Text.Trim();
int port = Convert.ToInt32(this.txt_Port.Text.Trim());
erms_server = new ERMS_Server(ip, port); System.Threading.Thread.Sleep(100);
if (erms_server.Connected) {
this.Label1.Text = "连接成功";
erms_server.Refresh_Form += new ERMS_Server.RefreshForm erms_server_Refresh_Form); //注册事件
}
else
this.Label1.Text = "连接失败";
}
void erms_server_Refresh_Form(string[] str) {
//throw new NotImplementedException();
string s = "";
for (int i = 0; i < str.Length; i++) {
s=this.TextBox1.Text += str[i]; //这个地方,str已经有值,将值显示在文本框中,但是,由于页面没有刷新,所以没有显示。
Response.Redirect(Request.Url.ToString());//手动刷新整个页面,这行代码报错。
}
}
通过什么方式可以将值显示出来?这里的Socket只用于获得服务器消息。通过委托和事件,将消息做处理。
推荐使用signalR ,以解决从 Web 应用程序的客户端监视远程任务进度的持续问题.
相关资料:
使用 SignalR 构建进度栏: http://msdn.microsoft.com/zh-cn/magazine/hh852586.aspx