【发布时间】:2013-05-13 10:18:12
【问题描述】:
经过一周的代码调试后,我发现我的基于 Windows 窗体的 GUI 行为异常的问题是因为我将表单运行为:
Form1 myGui = new Form1();
Application.Run(myGui);
将代码更改为:
Application.Run(new Form1());
显然成功了。
我遇到的问题是,由于某种原因,如果我以第一种方式创建表单并尝试使用 Invoke/BeginInvoke 模式编组一个调用,则该调用从未得到解决,而另一个线程则挂在案例中调用,或者根本不使用 BeginInvoke 调用函数。
谁能解释为什么会这样?
此外,我正在 Mono 和 Unity3D 上运行应用程序。
谢谢大家
【问题讨论】:
-
这是范围问题吗?除了 Form1 的生命周期之外,这 2 种方法之间没有区别。
-
这两行代码的作用完全相同。这听起来像是 Mono 的问题。
-
感谢您的回复。至于作用域,变量“myGui”是一个类变量,在调用类构造函数时实例化,但在调用方法“SpawnGui”时运行。我认为这不会导致范围界定问题!至于单声道,是的,这可能是问题所在,但这种行为太奇怪了,我认为还有其他问题。谢谢
标签: c# winforms mono unity3d invoke