当前位置: 代码迷 >> C# >> 请教有进程PID 该怎么判断进程是否存在
  详细解决方案

请教有进程PID 该怎么判断进程是否存在

热度:33   发布时间:2016-05-05 03:14:16.0
请问有进程PID 该如何判断进程是否存在?
启动程序 并获得了进程PID  在后面想停止进程 发现如果之前进程意外停止 程序就报错了... 该如何判断呢?  百度好多都是用进程名来判断的.  如果多个进程同名呢?
------解决思路----------------------
引用:
这虽说可以使程序继续运行...不过我主要是想知道怎么用PID确认进程是否存在.....


即使进程同名 pid也不会一样的



 Dim name = "notepad" '进程的名称
        Dim pid As Integer = -1
        Dim pp As Process() = Process.GetProcessesByName(name)

        For i As Integer = 0 To pp.Length - 1
            If (pp(i).ProcessName = name) Then
                pid = pp(i).Id
                Console.WriteLine("记事本进程的ID :" & pid)
            End If
        Next

        pp = Process.GetProcesses()
        Dim ishave As Boolean = False
        For i As Integer = 0 To pp.Length - 1
            If (pp(i).Id = pid) Then
                ishave = True
                Console.WriteLine("进程的名称 :" & pp(i).ProcessName)

            End If
        Next
        If ishave = False Then
            Console.WriteLine("未到到pid进程")
        Else
            Console.WriteLine("存在pid进程")
        End If

        '更改PID
        pid = 100
        pp = Process.GetProcesses()
        ishave = False
        For i As Integer = 0 To pp.Length - 1
            If pp(i).Id = pid Then
                ishave = True
                Console.WriteLine("进程的名称 :" & pp(i).ProcessName)
            End If
        Next
        If ishave = False Then
            Console.WriteLine("未到到pid进程")
        Else
            Console.WriteLine("存在pid进程")
        End If


------解决思路----------------------
不要直接Process.Start()
而是这样
Process p=new Process();
p.StartInfo=xxxxx;
p.Start();

保存住这个变量p,然后你就可以用它来判断进程的状态,避免每次都去遍历进程列表对比进程ID
------解决思路----------------------
.net是面向对象的编程语言
你保存住进程对象,然后直接判断状态就好
PID其实根本不需要
------解决思路----------------------
try catch
  相关解决方案