C# Socket通信问题!

来源:百度知道 编辑:UC知道 时间:2024/06/27 21:14:14
我已经进行到了最后一步,服务器端没有问题。客户端发送消息时也可以成功的接受。但是我接受数据的线程是在Main窗体中写的,但是我想将接受到得聊天数据在另一个窗体Message中的textBox上显示。请问如何实现,也就是说如何跨窗体,跨线程的传递数据。谢谢!
CheckForIllegalCrossThreadCalls属性为false
的安全性不是很好。可不可以用委托来实现??如果可以给个代码。

三楼和四楼的大哥怎么说的那么像!这分到底给谁啊?哈哈

可以啊,首先要在main窗体里面声明个
public delegate void myDelegate(string Message) ;
写个void returnMessage(string Message)
{//写你的窗体间传值代码,这个不难
}
然后在窗体初始化里面写个
myDelegate = new returnMessage(string Message);

现在已经完成了代理的注册问题,下面只需要在thread中的合适位置调用此窗体的这一委托,代码如下
窗体句柄.Invoke(窗体名.myDelegate,new Object[] {receivedMessage});
//receivedMessage是线程中接收到的string

至于窗体句柄怎么取得不细说了,给段代码自己看吧
public class MyFormControl : Form
{
.......
private void Button_Click(object sender, EventArgs e)
{
myThread = new Thread(new ThreadStart(ThreadFunction));
myThread.Start();
}
private void ThreadFunction()
{
MyThreadClass myThreadClassObject = new MyThreadClass(this);
myThreadClassObject.Run();
}
}
public class MyThreadClass
{
MyFormControl myFormControl1;
public MyThreadClass(MyFormControl myForm)