日期:2014-5-18 浏览次数:20262次

关于线程创建窗体的问题
我写了个程序里面有个Socket如果接受客户端发送的数据包,服务端要创建一个窗体并按客户端的传入数据格式显示部分信息,由于Socket是异步处理的,那么服务端在收到消息创建窗体的过程中调用form1.show()时,显示的窗体上没有任何控件好像没有被加载过一样,并且timer控件也无效,我查了资料用BeginInvoke好像也没有什么用,对于控件的同步问题我实在不是很了解,windows开发的也不是很多.哪位前辈能帮我解答一下,如何才能使这些不胜感谢!

------解决方案--------------------
up
------解决方案--------------------
帮顶一下

------解决方案--------------------
在主窗体提供创建新窗体的方法。
public void ShowForm(string msg)
{
this.Invoke(new MessageHandler(ShowForm2), msg);
}

private void ShowForm2(string msg)
{
Form2 fm2 = new Form2();
fm2.Show();
}

public delegate void MessageHandler(string msg);
------解决方案--------------------
在异步接受数据函数中显示也不行?
开个线程看看
------解决方案--------------------
线程创建窗体不是很难把,关键是你用Socket异步传入参数的时机
------解决方案--------------------
学习下