2014-11-04 61 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