2015-12-04 68 views
0

我有一个很大的应用程序,在确认对话框后显式调用Application.Exit()。但是,如果我调试该应用程序并退出,应用程序不会关闭。 Visual Studio仍然说“正在运行”。所有窗户都关闭。应用程序不会退出

有没有办法找出应用程序的哪部分仍在运行或阻塞什么?我尝试了“全部休息”,但它没有给我任何有用的信息。另外,我只有一个进程,没有线程。

+0

http://stackoverflow.com/questions/1057151/application-exit –

+0

您是否尝试过使用IntelliTrace并查看调用堆栈? –

+0

您可能有仍在运行的线程。尝试使用'Environment.FailFast'或'Environment.Exit'。我建议修复这个问题,当你退出时看看线程窗口,看看哪些仍在运行。你应该能够暂停他们,并看到他们正在做什么的更多细节。 –

回答

1

我发现这个问题,它是一个未关闭的数据库连接。我将SyncNotification=true添加到连接字符串中,显然这也意味着连接需要明确关闭。

因此,对于未来的访问者:正如其他人所提到的:检查线程,但也检查任何连接或其他可能的阻塞对象。

0

根据documentation Application.Exit通知所有消息泵必须终止,然后在消息处理后关闭所有应用程序窗口。任何代码仍然在UI线程中运行?

+0

我知道。问题是:如何找出可能导致这种情况的原因? –

+0

@BartFriederichs:在VS中单击“暂停”,调试器将切入当前正在运行的任务。 – Joey

+0

@Joey,是的,这只是我的主线。我发现了这个问题。这是一个未封闭的数据库连接。 –