流程的时间限制

时间:2012-08-23 11:01:11

标签: c# .net process

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

4 个答案:

答案 0 :(得分:1)

不,因为这样的解决方案在时间限制结束后不知道如何停止该过程。彻底杀死这个过程是潜在的危险因素,因此在一般情况下,该过程需要合作才能实现正常关闭。

设置计时器并让主循环检查表示计时器已经过去的条件并不困难。

答案 1 :(得分:1)

你可以产生这个过程,等待一段时间,然后杀死它。

var proc = Process.Start("myproc.exe");
bool graceful = proc.WaitForExit(10000);  //Wait 10 secs.
if (!graceful)
{
    proc.Kill();
}

答案 2 :(得分:0)

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

答案 3 :(得分:0)

如果你开始这个过程,你也可以用schtasks / create安排它。

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

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

Knowledgebase article on schtasks