关于委托更新界面的问题
在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定时检查有没有信息