Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 终止本地进程_.net_Vb.net_Process_Kill Process - Fatal编程技术网

.net 终止本地进程

.net 终止本地进程,.net,vb.net,process,kill-process,.net,Vb.net,Process,Kill Process,我正在使用以下命令终止本地进程: Sub KillProcess(ByVal ProcessName As String) Dim pProcess() As Process = System.Diagnostics.Process.GetProcessesByName(ProcessName) pProcess(0).Kill() End Sub 我称之为“以上”和“以下”: Private Sub Button10_Click(sender As O

我正在使用以下命令终止本地进程:

Sub KillProcess(ByVal ProcessName As String)
        Dim pProcess() As Process = System.Diagnostics.Process.GetProcessesByName(ProcessName)
        pProcess(0).Kill()
    End Sub
我称之为“以上”和“以下”:

Private Sub Button10_Click(sender As Object, e As EventArgs) Handles Button10.Click
        KillProcess("acsAPP")
        KillProcess("acsSRV")
        KillProcess("ACSTrans")
        KillProcess("acsCNTRL")
        KillProcess("acsRep")
    End Sub
显然,上面的操作只会杀死父进程,而不是整个树进程——以相同名称运行的多个进程。我如何杀死列出的所有同名进程?必须有一个力开关或类似的东西

谢谢

正如您在KillProcess中看到的,您只杀死了1个进程,而GetProcessByName返回了一个进程列表。试着用下面的方法替换你的方法,通过循环所有的进程并杀死它们

Private Sub KillProcess(ByVal ProcessName As String)

    Dim pProcess() As Process = System.Diagnostics.Process.GetProcessesByName(ProcessName)

    For Each p As Process In pProcess
        p.Kill()
    Next
End Sub
正如您在KillProcess中看到的,您只杀死了1个进程,而GetProcessByName返回了一个进程列表。试着用下面的方法替换你的方法,通过循环所有的进程并杀死它们

Private Sub KillProcess(ByVal ProcessName As String)

    Dim pProcess() As Process = System.Diagnostics.Process.GetProcessesByName(ProcessName)

    For Each p As Process In pProcess
        p.Kill()
    Next
End Sub

如果您查看上面的文档,您将看到它返回一个与名称匹配的流程数组,顺便说一下,没有流程树这样的东西,因为没有流程的层次结构

您只杀死数组中的第一个:pProcess0。注意0是数组中的第一个元素,因为它是基于零的

要解决此问题,您需要终止所有匹配的进程:

Sub KillProcess(ByVal ProcessName As String)
    For Each proc As Process In System.Diagnostics.Process.GetProcessesByName(ProcessName)
        proc.Kill()
    Next
End Sub

如果您查看上面的文档,您将看到它返回一个与名称匹配的流程数组,顺便说一下,没有流程树这样的东西,因为没有流程的层次结构

您只杀死数组中的第一个:pProcess0。注意0是数组中的第一个元素,因为它是基于零的

要解决此问题,您需要终止所有匹配的进程:

Sub KillProcess(ByVal ProcessName As String)
    For Each proc As Process In System.Diagnostics.Process.GetProcessesByName(ProcessName)
        proc.Kill()
    Next
End Sub

GetProcessesByName返回多个,但您只删除第一个。遍历所有结果并杀死每个结果似乎最简单。GetProcessesByName返回多个结果,但您只删除了第一个。循环所有结果,并杀死每一个似乎是最容易的。