Application.Run()导致应用程序挂起

时间:2010-12-21 20:54:35

标签: c# runtime-error exit

当我开始没有特定形式的申请时,例如

Application.Run();

然后我创建表单,在用户关闭它之后,该进程就会挂起。

这发生在Visual Studio之外。

我尝试将Application.Exit()和/或Application.ExitThread()放入表单的Form_Closing事件中,但它仍然挂起。

编辑:遗憾的是,使用自定义ApplicationContext不起作用。

仅供参考,我没有使用任何线程也没有使用BackgroundWorkers。

3 个答案:

答案 0 :(得分:2)

使用Tools + Attach to Process将调试器附加到挂起的进程。调试+全部中断。调试+ Windows +线程,双击主线程并查看其调用堆栈以查看它正在执行的操作。如果没有帮助,请在您的问题中发布堆栈跟踪。

答案 1 :(得分:1)

来自MSDN的无参数Application.Run():

  

大多数Windows窗体开发人员都不会   需要使用这个版本的   方法。你应该使用Run(Form)   用于启动应用程序的重载   一个主要形式,使应用程序   当主表格终止时终止   关闭。对于所有其他情况,请使用   Run(ApplicationContext)重载,   它支持提供   ApplicationContext对象更好   控制生命周期   应用

所以,简短的回答,尝试指定一个ApplicationContext对象,或者只是Run()你正在创建和显示的表单。也许一个更具体的例子说明为什么你试图打开消息循环而不将其绑定到表单会有所帮助。你打开几种形式吗?这是一个介绍形式,如启动画面或登录?

答案 2 :(得分:0)

请尝试使用Application.Run(new MyForm())的重载,尽管Application.Exit()应该按照here所述为你工作。