关于委托更新界面的问题

yzbsd 2007-11-21 10:35:52
在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)。还请各位指点一下
...全文
118 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
frankla 2007-11-22
  • 打赏
  • 举报
回复
一种是用INVOKE
要么收到信息就放QUEUE里
然后TIMER定时检查有没有信息
minlrg 2007-11-22
  • 打赏
  • 举报
回复
使用invoke,实质上这属于跨线程调用,因为界面中的textbox位于UI线程内。

110,539

社区成员

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

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

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