“并且等待必须是异步的”-我不是想逗他,但这不是矛盾吗?但是,由于您正在启动
Process,因此该
Exited事件可能会有所帮助:
ProcessStartInfo startInfo = null;Process process = Process.Start(startInfo);process.EnableRaisingEvents = true;process.Exited += delegate {};如果您想实际等待(超时等),则:
if(process.WaitForExit(timeout)) { // user exited} else { // timeout (perhaps process.Kill();)}为了等待异步,也许只是使用其他线程?
ThreadPool.QueueUserWorkItem(delegate { Process process = Process.Start(startInfo); if(process.WaitForExit(timeout)) { // user exited } else { // timeout }});


