1
代码调试的一个星期后,我发现我的Windows窗体GUI是行为异常的问题,因为我跑的形式:在Application.Run之外创建Windows窗体会产生奇怪的行为。为什么?
Form1 myGui = new Form1();
Application.Run(myGui);
改变代码:
Application.Run(new Form1());
显然做了伎俩。
我遇到的问题是,由于某种原因,如果我以第一种方式创建窗体,并试图用Invoke/BeginInvoke模式编组调用,则调用从未解决,使其他线程挂在Invoke的情况,或者根本不用BeginInvoke调用函数。
任何人都可以解释为什么会发生这种情况?
此外,我在Mono和Unity3D上运行应用程序。
谢谢大家
这是一个范围界定问题吗?两种方法之间没有区别,除了Form1的生命周期。 – Neil 2013-05-13 10:48:28
这两行代码完全相同。这听起来像是Mono的问题。 – 2013-05-13 10:50:53
感谢您的回复。 至于范围,变量“myGui”是一个类变量,它在调用类构造函数时得到实例化,但在调用方法“SpawnGui”时运行。我不认为这可能会导致范围问题! 由于单声道,是的,这可能是问题,但这种行为是如此奇怪,我认为还有一些其他问题。谢谢 – user2335498 2013-05-14 06:56:53