【问题标题】:Detecting application hangs with ActiveX controls in .Net使用 .Net 中的 ActiveX 控件检测应用程序挂起
【发布时间】:2014-01-15 12:38:31
【问题描述】:

我正在升级屏幕抓取应用程序。我们正在使用 ActiveX 控件从 IBM 大型机中抓取屏幕。大型机程序经常挂起并使 ActiveX 控件崩溃,从而导致我们的应用程序崩溃。我们无权访问大型机或 ActiveX 源代码。我们不会编写自己的活动 x 控件。

封装 ActiveX 控件以检测应用程序与控件挂起以便我们可以终止进程并使用代码重新启动的最佳方法是什么?

我应该创建 2 个单独的应用程序吗?一个作为控制器检查另一个并在进程挂起时终止/重新启动进程?

它们是否必须位于不同的应用程序域中?即使它们位于不同的应用程序域中,是否可以让两个程序相互通信?

【问题讨论】:

    标签: .net activex


    【解决方案1】:

    您可以使用 System.Diagnostics.Process.Start() 启动可执行文件。这将返回一个带有 Responding 属性的 Process 对象,您可以使用该属性定期检查进程是否仍处于活动状态。

    不过,您需要两个单独的应用程序来执行此操作。并且您正在监视的应用程序需要有一个主窗口,因为监视通过检查应用程序是否仍在处理来自主窗口消息队列的消息来工作。这与 windows 知道将“不响应”添加到窗口标题的方式相同

    【讨论】:

    • 对让这两个应用程序相互通信有什么建议吗?我可能只会使用数据库。有没有更简单的方法?
    • 您可以让应用程序在彼此的消息循环中发布内容。不过,进程间通信可能有更好的方法。尝试搜索 IPC 的 SO..
    猜你喜欢
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    相关资源
    最近更新 更多