【问题标题】:How to programmatically check if an application has hang in VB.NET如何以编程方式检查应用程序是否在 VB.NET 中挂起
【发布时间】:2012-03-22 06:07:23
【问题描述】:

我需要编写一个监控/看门狗程序来检查一系列应用程序

监控程序应该能够

  1. 确定它正在监视的应用程序是挂起还是没有响应
  2. 如果挂起,请重新启动特定应用程序

VB.NET 中什么样的 API 可以帮助我实现这一目标?

任何代码示例都会很有帮助

【问题讨论】:

    标签: vb.net monitoring freeze watchdog


    【解决方案1】:

    您可以使用 System.Diagnostics.Process 来启动/查找您正在查看的进程。根据您正在观看的应用程序,您可以使用以下内容:

    For Each proc As Process In System.Diagnostics.Process.GetProcesses
      If proc.ProcessName = "notepad" Then
        If proc.Responding = False Then
          ' attempt to kill the process
          proc.Kill()
    
          ' try to start it again
          System.Diagnostics.Process.Start(proc.StartInfo)
        End If
      End If
    Next
    

    确定应用程序是否“挂起”并不总是很清楚。它可能只是忙于做某事。 Process.Responding 也需要 MainWindow。

    这是一个非常简单的例子,但我希望它能为您指明正确的方向。

    【讨论】:

      【解决方案2】:

      Roland Bär 于 2004 年在 codeproject.com 上发表了一篇很好的文章,描述了这样做的原因和方法:

      http://www.codeproject.com/Articles/8349/Observing-Applications-via-Heartbeat

      【讨论】:

        猜你喜欢
        • 2010-12-02
        • 1970-01-01
        • 1970-01-01
        • 2012-07-08
        • 1970-01-01
        • 1970-01-01
        • 2011-05-05
        • 1970-01-01
        相关资源
        最近更新 更多