我有一个 TCP 服务器应用程序,并且有一个用于与 TCP 客户端通信的线程。当我从客户端收到数据时,我想使用此数据创建一个新表单,但我无法在线程中创建表单。我可以使用按钮单击事件轻松创建表单。
我哪里错了?
谢谢你。
我有一个 TCP 服务器应用程序,并且有一个用于与 TCP 客户端通信的线程。当我从客户端收到数据时,我想使用此数据创建一个新表单,但我无法在线程中创建表单。我可以使用按钮单击事件轻松创建表单。
我哪里错了?
谢谢你。
完成这项工作的示例代码:
private void Button1_Click(object sender, EventArgs e)
{
Thread t1 = new Thread(StartMe);
t1.Name = "Custom Thread";
t1.IsBackground = true;
t1.Start();
}
private void StartMe()
{
//We are switching to main UI thread.
TextBox1.Invoke(new InvokeDelegate(InvokeMethod), null);
}
public void InvokeMethod()
{
//This function will be on main thread if called by Control.Invoke/Control.BeginInvoke
MyForm frm = new MyForm();
frm.Show();
}
您必须在某处将上下文更改为 GUI 线程以创建新表单 - 在某处,您将需要 BeginInvoke() 一些东西。
这是什么类型的服务器 - 是一个“经典”同步服务器,其中每个客户端连接都有一个侦听线程和一个服务器<>客户端线程?
您不想在客户端连接时创建表单,您只想在连接的客户端特别询问时创建此表单,是吗?