使用检测信号URL监视Windows桌面应用程序

我们有一个Windows桌面应用程序需要一直运行(100%正常运行时间)。 它在Windows Server 2012上运行,除了一个讨厌的问题,运行时,应用程序继续运行(在任务pipe理器和资源监视器上可见),但其中的主要定时器线程已经停止,本质上没有做其核心工作。 只有应用程序UI是可见的。 令人惊讶的是,这个exception甚至没有在日志中捕获,日志生成刚刚停止。 所以日志监控技术无法在这里工作。

我们正在解决这个问题,但我们想监视/确保内部桌面应用程序正在工作。 我正在计划使用一个心跳URL来监视它,这个URL将在每个Timer事件触发时被这个桌面应用程序使用。 它会通知监视服务器(心跳URL主机)“我还活着”。 如果N分钟没有收到心跳,则会生成通知。

我的问题是,这是正确的方法? 上述目的是否有任何现成的付费/免费工具?

鉴于我们无法使用外部监控服务在内部监控应用程序,我想到了这一个解决scheme。

这听起来像你自己开发的东西,如果你已经有一个外部监测服务添加和外部URL post / get将工作,但听起来像是一个janky的解决scheme有点。

你也可以在同一台服务器上分离另一个进程,并做类似的事情。 由于日志生成暂停,并且如果在某个时间段内写入日志,请让进程监视该日志文件,并查看是否在期间内未写入。 如果没有写入,则终止进程并重新启动程序。

如果你能够分离另一个线程,而不是另一个进程,你可以创build一些共享的LastTimeCalledvariables。 Timer循环将variables设置为当前时间,另一个进程监视该variables。

但是,根本的问题是一些导致它停止的错误,应该修复错误,而不是使用创可贴。