有没有办法监控控制台应用程序的状态?
我正在尝试构建一个用户界面,显示控制台应用程序当前是否正在服务器上运行(处理文件)。如果它正在运行,我想显示当前状态:处理的文件数,当前正在处理的文件等等。
我能想到这样做的唯一方法:
对我而言,这似乎不是一种非常好或有效的方法。有没有办法检测ClickOnce应用程序是否正在运行,或许可以通过其他方式访问“消息”或其中的日志以显示进度?
注意 - 我也在考虑使用NodeJS来做这件事,但不确定它是否具备此功能。
答案 0 :(得分:4)
首先,您应该考虑将其写为Windows service而不是控制台应用程序。
也就是说,抓取应用程序正在编写的日志文件是一种合理的方法。只要确保它永远不会太大。
或者,您可以查看使用custom performance counters。这将打开使用System Monitor/perfmon作为监控工具的大门,因此无需编写任何客户端代码。
答案 1 :(得分:1)
至少有两种方法可以实现这一目标:
您的控制台应用程序在运行期间会写入一些日志,一些状态文件,因此其他进程可以读取这些文件并了解该控制台进程中发生的情况。
实施IPC机制。有不同的方法可以做到这一点。它可以帮助您查看 What is the easiest way to do inter process communication in C#? 。