2017-08-26 169 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時,過程未運行

相關問題