在Application.Run之外创建Windows窗体会导致奇怪的行为。为什么?

时间:2013-05-13 10:18:13

标签: c# winforms mono unity3d invoke

经过一周的代码调试后,我发现我的基于Windows窗体的GUI出现奇怪的问题是因为我运行的表单为:

Form1 myGui = new Form1();
Application.Run(myGui);

将代码更改为:

Application.Run(new Form1());

显然已经成功了。

我遇到的问题是,由于某种原因,如果我以第一种方式创建表单并尝试使用Invoke / BeginInvoke模式编组调用,则调用永远不会被解析,而另一个线程挂在案例中Invoke,或者只是从不用BeginInvoke调用该函数。

有人可以解释为什么会这样吗?

此外,我正在通过Mono和Unity3D运行应用程序。

谢谢大家

1 个答案:

答案 0 :(得分:0)

我已经在Windows和Mono下使用了许多场景,其中表单引用是全局管理的,或者作用于在通过Main方法静态调用Application.Run期间可用的类。除了一个范围问题之外,这听起来太可疑了。您是否尝试过仅提及您提及的代码的极简主义应用?我无法在Mono下使用Unity3D重现相同的结果。