문제

C# .NET 2.0을 사용하고 있습니다. PID가 있는지 확인해야합니다. 다음 코드를 생각해 냈습니다.

private bool ProcessExists(int iProcessID)
{
    foreach (Process p in Process.GetProcesses())
    {
        if (p.Id == iProcessID)
        {
            return true;
        }
    }
    return false;
}

모든 프로세스를 반복하는 것 외에 더 좋은 방법이 있습니까?

도움이 되었습니까?

해결책

빠른 참고 : 자신의 프로세스가 아닌 프로세스가 실행 중인지 확인할 수 없습니다. 최근 과거의 어느 시점에서 실행되고 있다고 말할 수 있습니다. 프로세스는 ID가 일치하는지 확인하기 위해 정확한 순간을 포함하여 주어진 순간에 단순히 존재하지 않을 수 있습니다.

즉, 이러한 유형의 결정은 귀하의 프로그램에 충분하거나 충분하지 않을 수 있습니다. 그것은 실제로 당신이하려는 일에 달려 있습니다.

다음은 작성한 코드의 약식 버전입니다.

private bool ProcessExists(int id) {
  return Process.GetProcesses().Any(x => x.Id == id);
}

다른 팁

여기서 위험한 것은 다음과 같습니다. 그 프로세스 ID는 어디서 얻었습니까? 언젠가 저장 한 숫자라면 원래 과정이 죽을 수 있었고 새로운 과정은 동일한 ID로 실행됩니다.

당신은 무엇을 성취하려고합니까? 실제 목표를 달성하는 더 나은 방법이있을 수 있습니다.

System.Diagnostics.Process.GetProcessById(iProcessID) 프로세스가 존재하지 않으면 ArgumentException을 던질 것입니다. 비록 그것이 프로세스가 존재하는지 확인하는 가장 좋은 방법은 아니지만, 이것이 당신이 찾고있는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top