Socket接收数据并绑定给Gridview

six-years 2013-11-18 02:30:19
如题
实时接收没什么问题,就是刷新绑定gridview老是没有效果。各位大侠给点意见

private delegate void ShowMsg(string strMsg);
private ShowMsg SM;
DataTable dt = new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
SM += new ShowMsg(SetLabel);

dt.Columns.Add("yvalue", typeof(string));
dt.Rows.Add();
}
private void SetLabel(string strMsg)
{

gvOpint.DataSource = dt;
gvOpint.DataBind();
}
protected void Button1_Click1(object sender, EventArgs e)
{
Thread td = new Thread(new ThreadStart(Sockelisten));
td.Start();
}
void Sockelisten()
{

IPAddress ips = Dns.GetHostAddresses(Dns.GetHostName())[0];
IPEndPoint ip = new IPEndPoint(IPAddress.Parse("192.168.2.59"), 6666);
Socket soc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
soc.Bind(ip);
soc.Listen(10);
Socket hander = soc.Accept();
while (true)
{
byte[] bytes = new byte[1024];
int len = hander.Receive(bytes);
string st = Encoding.Default.GetString(bytes);
dt.Rows.Add();
dt.Rows[dt.Rows.Count - 1][0] = st;

SM(st);

Thread.Sleep(1000);
}
}
...全文
193 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
six-years 2013-11-18
  • 打赏
  • 举报
回复
引用 5 楼 shoujizhucee 的回复:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using System.Text; namespace Webtestdatagridview { public partial class _Default : System.Web.UI.Page { public static int i = 0; public static int j = 0; private delegate void ShowMsg(string strMsg); private ShowMsg SM; static DataTable dt = new DataTable(); protected void Page_Load(object sender, EventArgs e) { if (j == 0) { dt.Columns.Add("yvalue", typeof(string)); dt.Rows.Add(); j++; } SM += new ShowMsg(SetLabel); } private void SetLabel(string strMsg) { GridView1.DataSource = dt; GridView1.DataBind(); } void tsetD(int m) { int i= 0; while (i<10) { if (m == 0) { string st = "dssd"; dt.Rows.Add(); dt.Rows[dt.Rows.Count - 1][0] = st; SM(st); i++; } else if (m == 1) { string st = "aaaa"; dt.Rows.Add(); dt.Rows[dt.Rows.Count - 1][0] = st; SM(st); i++; } } } protected void Button1_Click(object sender, EventArgs e) { this.tsetD(i); i++; } } } 我模拟了一下你想达到的效果,是可以实时更新的、、、
你这个不加委托都可以运行,但是放在线程中呢 如下修改 protected void Button1_Click1(object sender, EventArgs e) { //Sockelisten(); Thread td = new Thread(new ThreadStart(startThread)); } void startThread() { while(true){ tsetD(1); Thread.Sleep(5000); } } 不就挂了
shoujizhucee 2013-11-18
  • 打赏
  • 举报
回复
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using System.Text; namespace Webtestdatagridview { public partial class _Default : System.Web.UI.Page { public static int i = 0; public static int j = 0; private delegate void ShowMsg(string strMsg); private ShowMsg SM; static DataTable dt = new DataTable(); protected void Page_Load(object sender, EventArgs e) { if (j == 0) { dt.Columns.Add("yvalue", typeof(string)); dt.Rows.Add(); j++; } SM += new ShowMsg(SetLabel); } private void SetLabel(string strMsg) { GridView1.DataSource = dt; GridView1.DataBind(); } void tsetD(int m) { int i= 0; while (i<10) { if (m == 0) { string st = "dssd"; dt.Rows.Add(); dt.Rows[dt.Rows.Count - 1][0] = st; SM(st); i++; } else if (m == 1) { string st = "aaaa"; dt.Rows.Add(); dt.Rows[dt.Rows.Count - 1][0] = st; SM(st); i++; } } } protected void Button1_Click(object sender, EventArgs e) { this.tsetD(i); i++; } } } 我模拟了一下你想达到的效果,是可以实时更新的、、、
threenewbee 2013-11-18
  • 打赏
  • 举报
回复
web程序不能这么写的。 得客户端轮询。你这样只会把服务器搞死的。

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧