【问题标题】:How to get an alert when an exe process hangsexe进程挂起时如何获得警报
【发布时间】:2012-02-01 14:36:39
【问题描述】:

我有一个 exe 文件。让我们称之为 X.exe 它是我使用 C# 创建的控制台应用程序。 但是,它突然挂起,我必须手动重新启动它。我不想对代码进行任何更改。 我知道我们可以使用 Windows sysinternals 中的 ProcDump 或进程监视器。 当进程挂起时,我可以使用它们来监控我的 x.exe 并通过电子邮件收到警报吗? 如果是这样,我应该发送什么具体命令? 如果没有,我还应该用什么来解决这个问题?

编辑/添加:我是否应该使用创建 Windows 服务,使用 .net 的 process.GetProcessByName 函数识别进程并检查其是否仍在运行?

【问题讨论】:

  • 您提到进程“挂起”,但您的标题谈到抛出异常。这些似乎是相互排斥的。
  • 使用可以使用Nagios;或者您可以转储到由进程(unix 中的 smurf)监控的文件,然后当文件大小 > 0 时发送警报

标签: c# process monitoring


【解决方案1】:

你可以处理它,例如:

AppDomain.UnhandledException 事件,通过订阅它并在方法内部

  • 发送邮件
  • 记录下来
  • 通知用户发生致命错误
  • 或您可能需要的任何其他解决方案。

通过这种方式,您有一个中心点,您的应用程序将收到您的代码未处理的异常,并可以集中方式处理它们。

请记住,例如StackOverflowException 是无法处理的。

祝你好运。

【讨论】:

  • 那么,我应该编写另一个应用程序并在其中包含 AppDomain.Unhandeled 事件吗?因为,我不想修改我正在监控的当前应用程序的代码。
  • 不,您需要将该代码添加到您的应用程序。在你的 Main 静态方法中添加订阅,这不是一个巨大的变化。
  • 我创建了一个 Windows 服务,我会尝试采纳你的建议。
  • 如果您与要监控的应用程序不在同一个 AppDomain 中,则订阅 AppDomains Unhandeld-Event 将不起作用。那么,不希望对代码进行更改的原因是什么?
猜你喜欢
  • 2019-01-30
  • 2012-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多