我在通过TCP
连接接收命令时尝试打开新表单。当发生这种情况时,表格不会加载。当我使用完全相同的代码在按钮单击事件上打开表单时,表单会成功加载。
TCP
侦听器正在侦听与按钮不同的线程。
我没有收到任何错误或例外
答案 0 :(得分:0)
将要执行的业务逻辑放在单独的方法中(例如.OpenForm())。 尝试执行上下文切换回UI线程,然后只调用callOpenForm()。
答案 1 :(得分:0)
好像你想要从非UI线程创建一个表单,如
new Thread(() => { new Form() { Text = "In non-ui thread" }.Show(); }).Start();
这不起作用。但这可以通过一个小技巧来完成
var t = new Thread(() => { Application.Run(new Form() { Text = "In non-ui thread" }); });
t.ApartmentState = ApartmentState.STA;
t.Start();
答案 2 :(得分:0)
实际上,您可能尝试打开一个新的表单而不是UI线程。在这种情况下,您可以尝试MethodInvoker& delegate:
this.Invoke((MethodInvoker)delegate () { new Form() {
//Your code here
}).Show(); });