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

C# Application.Run()导致应用程序挂起,c#,runtime-error,exit,C#,Runtime Error,Exit,当我在没有特定表格的情况下开始申请时,例如 Application.Run(); 然后我创建表单,在用户关闭表单后,进程就挂起了 这发生在VisualStudio之外 我试图将Application.Exit()和/或Application.ExitThread()放入表单的form\u Closing事件中,但它仍然挂起 编辑:不幸的是,使用自定义ApplicationContext不起作用 仅供参考,我没有使用任何线程或后台工作程序。来自MSDN的无参数应用程序。Run(): 大多数Win

当我在没有特定表格的情况下开始申请时,例如

Application.Run();
然后我创建表单,在用户关闭表单后,进程就挂起了

这发生在VisualStudio之外

我试图将
Application.Exit()
和/或
Application.ExitThread()
放入表单的
form\u Closing
事件中,但它仍然挂起

编辑:不幸的是,使用自定义ApplicationContext不起作用


仅供参考,我没有使用任何线程或后台工作程序。

来自MSDN的无参数应用程序。Run():

大多数Windows窗体开发人员不会这样做 需要使用此版本的 方法。你应该使用跑步(表格) 重载以启动应用程序 主窗体,使应用程序 当主窗体为 关闭对于所有其他情况,请使用 运行(ApplicationContext)重载, 它支持提供 ApplicationContext对象以获得更好的性能 对服务器生命周期的控制 应用程序


因此,简短的回答是,尝试指定ApplicationContext对象,或者只运行()您正在创建和显示的表单。也许可以举一个更具体的例子来说明为什么您试图打开消息循环而不将其绑定到表单,这会有所帮助。你要开几张表格吗?这是一个介绍性表单,如启动屏幕还是登录?

来自无参数应用程序的MSDN。Run()

大多数Windows窗体开发人员不会这样做 需要使用此版本的 方法。你应该使用跑步(表格) 重载以启动应用程序 主窗体,使应用程序 当主窗体为 关闭对于所有其他情况,请使用 运行(ApplicationContext)重载, 它支持提供 ApplicationContext对象以获得更好的性能 对服务器生命周期的控制 应用程序


因此,简短的回答是,尝试指定ApplicationContext对象,或者只运行()您正在创建和显示的表单。也许可以举一个更具体的例子来说明为什么您试图打开消息循环而不将其绑定到表单,这会有所帮助。你要开几张表格吗?这是一个介绍性表单,像启动屏幕还是登录?

使用工具+附加到进程将调试器附加到挂起的进程。调试+全部中断。调试+Windows+线程,双击主线程并查看其调用堆栈以查看它正在做什么。如果没有帮助,请在问题中张贴堆栈跟踪。

使用工具+附加到进程将调试器附加到挂起的进程。调试+全部中断。调试+Windows+线程,双击主线程并查看其调用堆栈以查看它正在做什么。如果没有帮助,请在您的问题中张贴堆栈跟踪。

尝试使用
应用程序的重载。运行(new MyForm()
),尽管应用程序.Exit()应该按照说明为您工作。

尝试使用
应用程序.Run(new MyForm()
)的重载,而不是应用程序.Exit()应该按照说明为您工作。

它挂在Application.Run()行。:)实际上,只有外部代码和Program.cs(Application.Run())中的行。相信我,我已经在调用堆栈方面做了一些工作。好的,那么您就可以轻松地打开非托管调试了。安装Microsoft符号服务器。项目+属性,调试,勾选“非托管”。调用堆栈现在将向您显示正在运行的非托管代码。是否愿意分享您为他人所做的工作?@mnn是否愿意分享您为解决此问题所做的工作?(不确定其他注释是否通知您)它挂起在Application.Run()行。:)实际上,只有外部代码和Program.cs(Application.Run()中的行。相信我,我已经在调用堆栈方面做了一些工作。好的,那么您就可以轻松地打开非托管调试了。安装Microsoft符号服务器。项目+属性,调试,勾选“非托管”。调用堆栈现在将向您显示正在运行的非托管代码。是否愿意分享您为他人所做的工作?@mnn是否愿意分享您为解决此问题所做的工作?(不确定其他评论是否通知了你)我也有同样的问题。你解决了吗@mnn@BestArmy当前位置我想是的(根据我下面的评论),但我不记得是怎么做的。已经四年多了。在过去的一年里,我只开发了一个小型WinForms应用程序,否则我只能使用WPF/XAML。你确定你不记得了?是的,那太糟糕了,我不记得了。对不起,我真的不记得我当时做了什么。我甚至不记得它是什么应用程序,否则我可以尝试查找它的源代码。不幸的是,你必须自己解决这个问题(我相信你已经尝试过这里的答案了)。我也有同样的问题。你解决了吗@mnn@BestArmy当前位置我想是的(根据我下面的评论),但我不记得是怎么做的。已经四年多了。在过去的一年里,我只开发了一个小型WinForms应用程序,否则我只能使用WPF/XAML。你确定你不记得了?是的,那太糟糕了,我不记得了。对不起,我真的不记得我当时做了什么。我甚至不记得它是什么应用程序,否则我可以尝试查找它的源代码。不幸的是,你必须自己解决这个问题(我相信你已经尝试过这里的答案)。