C# Socket通信问题!
来源:百度知道 编辑:UC知道 时间:2024/06/27 21:14:14
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)