2011-01-10 78 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