首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何判断应用程序是否已被锁定,或者只是花费了很长时间

如何判断应用程序是否已被锁定,或者只是花费了很长时间
EN

Stack Overflow用户
提问于 2015-10-02 17:09:15
回答 1查看 170关注 0票数 1

项目描述

我为一个CAD系统编写了一个插件,它可以批量翻译CAD文件.我希望能在无人看管的情况下运行插件。在处理CAD文件时,有时需要从CAD程序本身进行用户交互。另一个我在这个项目上工作的人编写了一个使用AutoIt来响应消息框的程序,这个程序适用于大多数遇到的情况。

插件使用Visual 2010用C++编写,脚本程序使用AutoIt编写.操作系统是Windows 7。

问题

一些CAD文件将导致CAD程序锁定。我们试图通过使用AutoIt程序检查窗口标题中的“未响应”来克服这一问题,然后终止并重新启动CAD程序和插件,并从它停止的地方拾取。这适用于实际锁定CAD程序的文件。问题是,当CAD程序需要很长时间才能完成时,“不响应”有时会出现在窗口标题中,而不是实际锁定。

当前的工作-环绕

我们现在提出的解决方案是在“未响应”出现后在AutoIt程序中设置一个延迟,然后在重新启动程序之前再次检查。问题是,它只是猜测工作的多长时间来设置计时器。

问题

现在听我的问题。我是否可以使用Windows来区分程序何时实际被锁定或只需要很长时间?或者,我只需要把计时器定得足够高,这样就足以应付这种情况了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-02 19:09:12

不幸的是,变得反应迟钝既不是考虑进程锁定的必要条件,也不是充分条件。一个好的程序员可以很容易地保持UI响应,而算法线程已经下降到一个无限循环。

要尝试的事情:

  • 开始创建一个CAD文件大小的日志,再次显示完成转换所需的时间。这将使您能够快速估计给定输入大小的等待时间。如果这是相关的话。这样,如果CAD程序经常锁定小输入,则不必等待很长时间。
  • 当CAD程序被锁定时,观察它的行为。它是旋转CPU (无限循环)还是死锁在低CPU利用率(可能互斥等待对方)?在成功的转换过程中怎么样?CPU是否总是由于交错IO的发生而不断增加或下降?如果您发现了一种不同的模式,那么这可能有助于您区分仍然运行和死锁运行。
  • 发送失败的CAD文件给你的CAD供应商,让他们修复他们的代码(哈哈,我知道)。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32912346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档