2014-11-04 60 views
-1

是否有一種簡單的方法可以在不觸發任何註冊的FormClose或ApplicationExit事件的情況下終止正在運行的應用程序?就像在任務管理器中選擇進程並從那裏殺死它一樣?終止當前應用程序繞過關閉事件

我知道這不是「乾淨」的方式,我知道你應該使用System.Windows.Forms.Application.Exit()Me.Close,但在這種情況下,我真的需要做到「髒」的方式!

我現在唯一能想到的就是獲取我的應用程序的進程名稱,並使用System.Diagnostics.Process來獲取實例並調用kill。但有一個更簡單的方法會很好。

+2

爲什麼你需要這樣做? – 2014-11-04 14:29:53

+0

因爲在這種情況下應用程序關閉的註冊事件不應該運行。 – 2014-11-04 14:43:51

+0

您可以在VB.NET中簡單地使用'End'關鍵字。與Environment.Exit()完全相同。最可能的方式是Environment.FailFast(),甚至不是終結者運行。 – 2014-11-04 14:53:44

回答

0

找到它了,Process有一個函數來獲取當前進程。

Dim process As System.Diagnostics.Process = process.GetCurrentProcess 
process.Kill() 
0

如果您不希望關閉事件或關閉事件運行,那麼您也可以刪除處理程序。
然後,你的不會運行,應用程序將關閉而無需在這些事件中運行代碼。

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    RemoveHandler MyBase.FormClosing, AddressOf Form1_FormClosing 
    RemoveHandler MyBase.FormClosed, AddressOf Form1_FormClosed 
    Me.Close() 
End Sub 
+0

我明確表示我想這樣做的骯髒的方式。我知道你可以刪除處理程序,但是我處於一個嵌入式API範圍,我無法控制底層應用程序事件。但是我需要關閉這個過程,而不是保存一些設置,而是在關閉事件中進行。 – 2014-11-05 05:55:28

+0

@Ryu Kajiya你說...有沒有簡單的方法來殺死正在運行的應用程序,而不會觸發任何已註冊的FormClose或ApplicationExit事件? – Creator 2014-11-05 11:57:13