2013-05-13 54 views
1

代码调试的一个星期后,我发现我的Windows窗体GUI是行为异常的问题,因为我跑的形式:在Application.Run之外创建Windows窗体会产生奇怪的行为。为什么?

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

改变代码:

Application.Run(new Form1()); 

显然做了伎俩。

我遇到的问题是,由于某种原因,如果我以第一种方式创建窗体,并试图用Invoke/BeginInvoke模式编组调用,则调用从未解决,使其他线程挂在Invoke的情况,或者根本不用BeginInvoke调用函数。

任何人都可以解释为什么会发生这种情况?

此外,我在Mono和Unity3D上运行应用程序。

谢谢大家

+0

这是一个范围界定问题吗?两种方法之间没有区别,除了Form1的生命周期。 – Neil 2013-05-13 10:48:28

+0

这两行代码完全相同。这听起来像是Mono的问题。 – 2013-05-13 10:50:53

+0

感谢您的回复。 至于范围,变量“myGui”是一个类变量,它在调用类构造函数时得到实例化,但在调用方法“SpawnGui”时运行。我不认为这可能会导致范围问题! 由于单声道,是的,这可能是问题,但这种行为是如此奇怪,我认为还有一些其他问题。谢谢 – user2335498 2013-05-14 06:56:53

回答

0

我已经在Windows和Mono在很多场景中的形式引用管理全局或作用域在或通过Main方法静态调用Application.Run期间可用类的工作。这听起来太可疑了,只是一个范围问题。你有没有试过一个简单的应用程序,只有你提到的那段代码?我无法在Mono下使用Unity3D重现相同的结果。