簡體   English   中英

退出C#winforms應用程序

[英]Exiting a C# winforms application

我有一個從Excel導入數據的應用程序。 但是,當我運行winforms應用程序並且我使用System.Windows.Forms.Application.Exit();侵入應用程序時System.Windows.Forms.Application.Exit(); 我仍然可以在任務管理器中看到“MyAppName”.vshost32.exe。

當我以調試模式退出應用程序時,表單關閉,但VS IDE未“停止”。

如何確保應用程序正確結束。

您對Application.Exit()調用工作正常。 MyAppName.vshost32.exe可執行文件是用於調試目的的主機。 無論是否存在活動的調試會話,它都會在Visual Studio中打開項目時運行。

更新:好的,我誤解了。 以上是正確的,但您可能在后台掛起線程時遇到問題。 您需要終止線程以使其正常關閉。 Asher的答案涵蓋了這一點。 如果你只是想做一個超級黑客的快速和骯臟的殺戮,你可以使用以下(雖然我不負責副作用,因為它是非常hacky):

System.Diagnostics.Process.GetCurrentProcess().Kill();

該進程不會終止,因為它仍然有前台線程在運行

如果在應用程序中創建線程,則需要將它們標記為后台線程,或者確保它們在您希望應用程序退出時終止。

你有沒有嘗試過更殘酷的Environment.Exit()函數?

Application.Exit()只發送一條消息說要關機; 如果消息永遠不會被處理(無論出於何種原因),應用程序將無限期地保持運行。

Application.Exit()MSDN文檔

Exit方法停止所有線程上所有正在運行的消息循環,並關閉應用程序的所有窗口。 此方法不一定強制應用程序退出。 Exit方法通常在消息循環中調用,並強制Run返回。

我有一個類似的問題,由第三方工具導致我不允許我將線程設置為背景。 多項式有正確的想法,但語法是這樣的:

System.Diagnostics.Process.GetCurrentProcess().Kill();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM