2009-07-13 88 views
2

我们最近在我们的软件中添加了一项新功能 - 为上载并存储在服务器上的文档预览生成。我们这样做的方式如下:服务中的计时器

  1. 用户上传文件;
  2. 一旦用户打开文档信息卡,就会发布最近上传文档的预览(关于预览生成的信息存储在数据库表中);
  3. 每隔30秒我们的服务开始,审查预览表并启动预览生成程序。

我现在面临的问题是 - 用于生成预览的新代码使用了我们的一些遗留代码,它有时会“冻结”Word或Excel进程。预览停止的生成以及以下所有预览均处于“待处理”模式,直到我终止Word,Excel进程(我们测试MS Office文档的预览)为止。在我终止进程后,预览生成继续。

我正在考虑在我们的服务中实现计时器,以便如果服务在开始预览生成后的1分钟内等待更多时间,它应该终止进程并继续为其他文档生成预览。

我现在面临的主要问题是我无法将调用转移到我们的遗留代码来分离进程,就像我们对其他文档所做的那样(例如,我们已经通过Process实现了使用GhostScript生成.ps文件) ES)。

关于如何“处理”调用遗留代码的任何想法?

+0

只是为了澄清,你说:“我不能将调用转移到我们的遗留代码来分离进程。”这是否意味着您无法将调用包装在异步线程中,只需检查该线程的状态一分钟,并在线程没有及时完成的​​情况下中止线程?这让我感到很震惊,因为你直接回答了你的问题,但是如果你以某种方式限制你不能这样做,请你详细说明一下吗? – joshlrogers 2009-07-13 14:43:57

+0

是的,你是对的 - 我无法在异步线程中将调用包装到遗留代码中。这是我最初想要做的,但无法做到的。 – brokenisfixed 2009-07-13 16:54:16

回答

2

您可以在第一个过程中制作第二个过程,即看门狗

或者你可以使第一个进程自动重启,并有第二个计时器线程监视它,然后杀死自己的进程?