表格不断加载

时间:2014-08-23 20:54:12

标签: c# forms tcp

我在通过TCP连接接收命令时尝试打开新表单。当发生这种情况时,表格不会加载。当我使用完全相同的代码在按钮单击事件上打开表单时,表单会成功加载。

TCP侦听器正在侦听与按钮不同的线程。

我没有收到任何错误或例外

3 个答案:

答案 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(); });