【发布时间】:2022-01-14 18:04:03
【问题描述】:
我有一个 .exe 进程,我想等待 2 小时才能完成。但是,如果花费的时间超过 1 小时,我想调用一个函数来发送电子邮件状态,这比平时花费的时间长。如果需要超过一定时间但没有退出进程并仍然等待整整 2 小时,如何调用函数?
我如何调用进程
var proc = System.Diagnostics.Process.Start(exePath, parameterString);
var procExited = proc.WaitForExit(twohourinmilliseconds);
//do something here if taking longer than 1 hour but not quit?
int exitCode = proc.ExitCode;
【问题讨论】:
-
您可以使用轮询循环来休眠一秒钟,例如检查 proc 状态并重复,而不是调用
WaitForExit,直到达到某个总体超时。 -
什么是进程被 waitForExit 最大时间杀死的等价物,如果超过 2 小时,我可以说 proc.kill() 吗?
-
我在 WaitForExit 的文档中没有看到任何迹象表明如果超时到期,进程会被终止,所以实际上你可以将它用于你想做的事情。
-
@500-InternalServerError 所以即使说我在 WaitForExit 返回后退出了我的 c# 应用程序,该进程仍在运行?
-
这是我得到的印象,虽然我自己没有测试过。