我想写一个等待进程死亡然后执行一些动作的方法。下面我的初稿有一个竞争条件,如果在我检查Exited
事件后进程退出,我的动作将永远不会执行。重写此方法以使其正确的最雄辩的方法是什么?
private void MonitorProcess(int processId, Action doOnExit)
{
Process process = Process.GetProcessById(processId);
if (process.HasExited)
{
doOnExit();
}
else
{
process.EnableRaisingEvents = true;
process.Exited += delegate { doOnExit(); };
}
}