监视远程进程

时间:2011-01-10 22:06:34

标签: c# process

我有一个停止服务的方法,但我还需要删除日志。通常这不是问题,但是在关闭之前该过程可能需要一些时间。同样,虽然服务显示已停止,但该过程确实需要额外的时间才能正常关闭。由于进程仍在运行,我无法删除日志,因此我需要找到一种方法来监视.exe,以便知道删除日志的安全性。

到目前为止,我最好的选择是执行while循环,不幸的是,delete语句的第一次迭代会抛出异常并停止程序。

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

我确信有一个简单的解决方案,但我缺乏经验才是真正的问题。

1 个答案:

答案 0 :(得分:1)

这可能也不是最佳答案,但您可以将循环反转为:

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

我认为这会在执行内容之前评估循环的条件。但是根据你的陈述,在进程退出之前,这不会执行代码。

一种解决这个问题的方法是执行循环,并在条件完成后手动分解:

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
}