【问题标题】:Is there a way to monitor the state of a console application?有没有办法监控控制台应用程序的状态?
【发布时间】:2013-05-16 03:40:09
【问题描述】:

有没有办法监控控制台应用程序的状态?

我正在尝试构建一个用户界面,显示控制台应用程序当前是否在服务器上运行(处理文件)。如果它正在运行,我想显示当前状态:处理了多少文件,当前正在处理什么文件等。

我能想到的唯一方法:

  1. 在应用程序启动时创建一个 text/xml 文件
  2. 使用它处理的每个对象的当前状态信息更新文本文件
  3. 应用程序完成处理后删除文本文件

对我来说,这似乎不是一个很好或有效的方法。有没有办法检测 ClickOnce 应用程序是否正在运行,也许还有其他方法可以访问“消息”或它的日志以显示进度?

注意 - 我也在考虑使用 NodeJS 来执行此操作,但不确定它是否具有此功能。

【问题讨论】:

  • 您可以更改控制台应用程序的代码吗?

标签: c# .net node.js clickonce monitoring


【解决方案1】:

首先,您应该考虑将其编写为 Windows service 而不是控制台应用程序。

也就是说,抓取您的应用程序正在编写的日志文件是一种合理的方法。只要确保它永远不会变得太大。

或者,您可以查看使用custom performance counters。这将为使用System Monitor/perfmon 作为您的监控工具打开大门,因此无需编写任何客户端代码。

【讨论】:

  • 为什么立即建议将其编写为 Windows 服务?
  • 很多原因,其中: 设计为无人值守运行;无需登录用户;内置实用程序可用于启动、停止和暂停服务。
【解决方案2】:

至少有两种方法可以实现:

  1. 您的控制台应用程序在运行期间会写入一些日志和一些状态文件,以便其他进程可以读取这些文件并了解该控制台进程中发生的情况。

  2. 实现IPC 机制。有不同的方法可以做到这一点。它可能会帮助您查看What is the easiest way to do inter process communication in C#?

【讨论】:

  • 快速浏览一下 - 看起来 IpcChannel 类和 Microsoft Messaging Queuing 是两种类似的方法?
  • @DoctorOreo:他们看起来相似,但肯定会有一些不同。
猜你喜欢
  • 2015-03-25
  • 2011-12-21
  • 1970-01-01
  • 2011-03-07
  • 1970-01-01
  • 2011-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多