2012-11-14 25 views

回答

2

這是做實際監測的方法。就動態配置文件而言,產生這些監視器線程的主線程可以使用FileSystemWatcher,http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx來監視帶有進程名稱的xml /文本文件。您可以將取消標記傳入函數,並在每次迭代中檢查標記是否被取消。

static Task MonitorProcessAsync(string process, Action<string> startAction, Action<string> exitAction) 
{ 
    return Task.Factory.StartNew(() => 
    { 
     bool isProcessRunning = false; 

     while (true) 
     { 
      int count = Process.GetProcessesByName(process).Count(); 
      if (count > 0 && !isProcessRunning) 
      { 
       startAction(process); 
       isProcessRunning = true; 
      } 
      else if (count == 0 && isProcessRunng) 
      { 
       exitAction(process); 
       isProcessRunning = false; 
      } 

      Thread.Sleep(1000); 
     } 
    }); 
} 

Action<string> startAction = (process) => Console.WriteLine(process + " Started!"); 
Action<string> exitAction = (process) => Console.WriteLine(process + " Stopped!"); 
MonitorProcessAsync("notepad.exe", startAction, exitAction); 
+0

對不起,我不得不重組我的問題,我必須同時監測啓動和進程退出。 – ron975

+0

沒關係。我修改它來監視進程的開始和停止。它使用布爾值來表示進程的先前狀態,並根據當前計數來檢查它是否有機會,如果它執行了適當的開始或存在操作。 – Despertar

相關問題