2015-12-04 107 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,是的,這只是我的主線。我發現了這個問題。這是一個未封閉的數據庫連接。 –