【发布时间】:2010-02-03 21:41:32
【问题描述】:
我一直遇到这个问题,解决它,然后当我实现新代码时它又回来了。快把我逼疯了!
我最终发现,如果您实例化任何类型的 Window,即使您从未调用 Show() 或 ShowDialog(),当您关闭应用程序时,它也不会终止。所以现在我确保在适当的时候调用 Close(),并且我创建的所有 Windows 都没有出现问题。
我已经实现了更多不创建窗口的新功能(据我所知!),但现在我的应用程序不会再次终止。我认为在 VS IDE 中暂停是没有用的,因为线程没有任何上下文,所以我无法弄清楚是什么代码导致了挂起。
通常情况下,我希望在后台执行但尚未退出(并且未设置为后台线程)的线程会导致此行为,但此时我没有创建任何线程。
谁能推荐一个好工具(免费或需要许可证)来帮助我快速解决这些愚蠢的问题?现在,我要回去,注释掉大量新代码,然后逐行取消注释,直到问题再次出现。蛮力是我通常最终修复这些事情的方式,并且非常感谢一种让我的生活更轻松的工具。 :)
【问题讨论】:
-
WinForms :如果这些都是“愚蠢”的问题,你可能已经完成了所有工作来“确定这一点”,请原谅:你在使用 ApplicationContext 吗?您是否在 Program.cs 文件中做任何不寻常的事情?您是否为主窗体的 FormClosing 和 FormClosed 事件(通常在 Program.cs 中启动的事件)编写了一个处理程序,并在这些事件处理程序中放置断点和/或记录消息并检查了状态,查看了“应用程序”的内容.OpenForms ?你在用 AppDomains 做些什么吗?
-
我使用的是 WPF,而不是 Windows 窗体。我发现它在反射代码中,它现在挂起而以前没有挂起的原因是因为我对插件使用的接口进行了一些更改。所以现在我必须对代码进行比较,这样我才能准确地看到接下来需要注释的内容。 :)
标签: c# .net wpf multithreading