首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于委托更新界面的有关问题

2011-12-27 
关于委托更新界面的问题在window mobile里面的一个小东西。定义一个委托:public delegate void ResponseEve

关于委托更新界面的问题
在window mobile里面的一个小东西。
定义一个委托:
public delegate void ResponseEvent(string ip, byte[] responseBytes);
窗体界面中的代码:
...
private void Form1_Load(object sender, EventArgs e)
  {
  tcpClient = new TcpClient();
  tcpClient.OnResponse += new ResponseEvent(OnResponse);
  }
private void OnResponse(string sIp, byte[] responseBytes)
  {
  string sRet = "";
  for (int i = 0; i < responseBytes.Length; i++)
  {
  sRet += responseBytes[i].ToString() + " ";
  }
  MessageBox.Show(sRet);
  //txtRecv.Text = sRet;
  }
...
通讯类中的部分代码:
private void ReceiveCallback(IAsyncResult ar)
{
  ...
  OnResponse(ip, btRecv);
  ...
}

要实现的功能就是通过socket受到消息之后,在界面中的textbox中显示出来。但是现在遇到这样一个问题,用MessageBox可以显示出来,但是不能赋给textbox(操作别的控件也不可以,如listview)。还请各位指点一下

[解决办法]
使用invoke,实质上这属于跨线程调用,因为界面中的textbox位于UI线程内。
[解决办法]
一种是用INVOKE
要么收到信息就放QUEUE里
然后TIMER定时检查有没有信息

热点排行