我有一个停止服务的方法,但我还需要删除日志。通常这不是问题,但是在关闭之前该过程可能需要一些时间。同样,虽然服务显示已停止,但该过程确实需要额外的时间才能正常关闭。由于进程仍在运行,我无法删除日志,因此我需要找到一种方法来监视.exe,以便知道删除日志的安全性。
到目前为止,我最好的选择是执行while循环,不幸的是,delete语句的第一次迭代会抛出异常并停止程序。
do
{
// delete logs
}
while (System.Diagnostics.Process.GetProcessesByName(processName, machineName).Length > 0);
我确信有一个简单的解决方案,但我缺乏经验才是真正的问题。
答案 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
}