2011-01-10 131 views
0

我有一種方法可以停止服務,但我也需要刪除日誌。通常這不是問題,但是結束之前可能需要一些時間。同樣,儘管服務似乎已停止,但該過程確實需要更多時間才能正常關閉。由於該進程仍在運行,因此我無法刪除日誌,因此我需要找到一種方法來監視.exe以瞭解何時可以安全地刪除日誌。監控遠程進程

到目前爲止我的最佳選擇是do while循環,不幸的是,第一次刪除語句的迭代拋出異常並停止程序。

do 
{ 
// delete logs 
} 
while (System.Diagnostics.Process.GetProcessesByName(processName, machineName).Length > 0); 

我肯定有一個簡單的解決方案,但我的經驗不足是真正的問題。

回答

1

這可能不是最好的答案要麼,但你可以反轉回路:

while (System.Diagnostics.Process.GetProcessesByName(processName, machineName).Length > 0) 
{ 
    // delete log files. 
} 

我想這會在執行前的內容evalutate循環的狀態。但根據你的陳述,在程序退出之前,這不會執行代碼。

解決此甲的hackish方法是執行一個循環,並手動爆發一旦條件:

bool CloseProcessOperation = true; // Control variable incase you want to abort the loop 
while (CloseProcessOperation) 
{ 
    if (System.Diagnostics.Process.GetProcessesByName(processName, machineName).Length > 0) { break; } 
    // break if no logs exist 
    // break for some other condition 
    // etc 

    // delete logs 
} 
+0

正確,這樣做的問題是,長度爲1,而在過程運行,因此「刪除日誌「代碼將不會被執行,除非在進程停止後調用它。它不會等待過程結束,這正是我需要的。 – Ryan 2011-01-10 22:39:01