0

是否可以为流程设置时间限制?我意识到这可以使用多线程来完成。例如,我可以使用一个线程来执行该进程,而另一个线程在一段时间后将其杀死,但是没有更简单的解决方案吗?

4

4 回答 4

1

您可以生成该进程,等待一段时间,然后将其终止。

var proc = Process.Start("myproc.exe");
bool graceful = proc.WaitForExit(10000);  //Wait 10 secs.
if (!graceful)
{
    proc.Kill();
}
于 2012-08-23T11:37:54.233 回答
1

不,因为这样的解决方案不知道在时间限制过去后如何停止该过程。彻底终止进程是有潜在危险的,所以在一般情况下,进程需要配合才能实现正常关闭。

设置一个计时器并让你的主循环检查表示计时器已过的条件真的不是那么难。

于 2012-08-23T11:03:34.063 回答
0

除非正在执行的线程可以定期检查自己并优雅退出,否则不会。在大多数情况下,您不能信任执行线程来执行此操作。

于 2012-08-23T11:05:29.610 回答
0

如果您启动该过程,您也可以使用 schtasks /create 来安排它。

这将几乎免费为您提供所需的东西(几乎是因为您的启动过程有点复杂,没有免费的午餐)

SCHTASKS /Create /SC DAILY /TN gaming /TR c:\freecell /ST 12:00  /ET 14:00 /K

关于 schtasks 的知识库文章

于 2012-08-23T11:12:02.217 回答