我有一个.Net控制台应用程序,每分钟在控制台上显示数千行。我想将其转换为Windows服务,但我仍然需要一种查看这些消息的方法。将它们写入事件日志甚至是标准日志文件的消息太多了。我想知道是否有办法编写一个systray应用程序,可以简单地从服务拦截这些消息并在控制台窗口中显示它们。我不需要保存较旧的消息,我只需要查看当前的活动。
答案 0 :(得分:0)
该服务需要写入某些排序的共享内存,以便与显示输出的另一个程序进行通信。我认为最好的办法是输出到SQL表或其他东西并清除旧条目,这样一次表中的记录就不会超过1000条。然后在查看器应用程序中每秒对表格进行几次ping操作,并显示输出的流式视图。
答案 1 :(得分:0)
听起来System.Diagnostics.Trace
类型对此非常适合。分两个阶段实施您的更改:
对于阶段1,您将ConsoleTraceListener添加到您的应用程序,并将所有当前调用转换为Console以写入Trace。这只会保留您现有的行为,但它会让您轻松更改新输出。
对于阶段2,您实现了一个可以附加的新TraceListener而不是ConsoleTraceListener,它可以对消息执行任何操作。这可能包括从您建议的系统托盘或控制台应用程序中侦听连接。更好的是,我打赌一些谷歌搜索会告诉你一个已经做你想要的TraceListener。
至于传达消息的实际机制,我建议使用标准的SysLog方法。这具有为客户端使用现有软件的优势,使您更有可能找到existing TraceListener,并且许多现有的系统日志客户端将带来一些自动数据挖掘作为奖励。