2017-08-26 109 views
-1

我正在创建一个应用程序,该应用程序应该在检测到它已关闭时自动重新启动程序。我创建了两个按钮,一个用于激活它,另一个用于隐藏窗口。在下面的代码中,Exec()中的do-while循环执行,但(pname.Lenght == 0)总是返回false。C#:检查进程是否正在运行问题

(toCheck和PathToFile是文本框)

 public volatile bool isRunning; 
     public volatile bool isProcessRunning; 
     public volatile string ProcessToCheck; 
     public volatile string FilePath; 

    private void RunBtn_Click(object sender, RoutedEventArgs e) 
    { 
     if (isRunning) 
     { 
      isRunning = false; 
     } 
     else 
     { 
      isRunning = true; 
      ProcessToCheck = toCheck.Text; 
      FilePath = PathToFile.Text; 
      Thread newThread = new Thread(Exec); 
      newThread.Start(); 
     } 

    } 

    void Launcher() 
    { 
     if (isProcessRunning == false) 
     { 
      Process.Start(FilePath); 
     } 
    } 

    public void Exec() 
    { 
       do 
       { 
         Process[] pname = Process.GetProcessesByName(ProcessToCheck); 
         if (pname.Length == 0) 
         { 
          isProcessRunning = false; 
         } 
         else 
         { 
          isProcessRunning = true; 
         } 

        Launcher(); 
       } while (isRunning); 
    } 
    } 
} 
+3

你需要告诉我们它什么方式在问题*中不工作*。 – Richard

+0

@Richard好的,我在问题中加入了 – cntrpl

+0

您是否可以将代码缩减为更简单的示例,最好是可以复制和粘贴以调查问题的示例。 你能否详细说明“不起作用”。它怎么不工作?你在期待什么?会发生什么呢?你做了什么调查? – Will

回答

0

没关系,原来pname.Lenght返回1而不是0时,过程未运行

相关问题