在Windows XP中,当我们的服务因未知原因无法启动时,MessageBox.Show()是一种提示用户的可行方法。但是,对于Vista及更高版本,服务不再显示此消息,这是可以理解的,因为大多数时候使用对话框阻止服务是不可取的。 MessageBox.Show()的哪些(非阻塞,最好是)替代方案可用于服务?
答案 0 :(得分:5)
Windows服务应在遇到错误时写入Windows事件日志。 最好是应用程序日志。
您需要为服务创建一个事件源,为此,您需要管理员权限,因此这应该在安装过程中完成。
答案 1 :(得分:2)
答案 2 :(得分:2)
您有两个基本选项:
创建在系统托盘中运行的特定于用户的启动应用程序。此应用程序将连接到服务并从服务接收消息(这类似于防病毒程序的运行方式)。
将所有消息和例外记录到事件日志中。您可以将应用程序事件日志用于关键问题,并将特定于应用程序的事件日志用于信息或诊断消息。
上述选项并不相互排斥,您应该始终实施#2。
答案 3 :(得分:1)
声明:
private static TraceSource _traceSource = new TraceSource("YourSourceName");
用法,请参阅MSDN:
_traceSource.TraceEvent(...);
配置:
<system.diagnostics>
<sources>
<source name="YourSourceName" switchValue="All" switchType="System.Diagnostics.SourceSwitch">
<listeners>
<add name="eventLog" />
</listeners>
</source>
<trace autoflush="true">
<listeners>
<add name="eventLog" />
</listeners>
</trace>
<sharedListeners>
<add name="eventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="SourceName" />
</sharedListeners>
</system.diagnostics>
答案 4 :(得分:1)
记录只是告知用户服务问题的一种正确方法。 事件日志是服务的登录系统。
答案 5 :(得分:1)
通常会使用EventLog进行记录(例如,服务启动/停止,以及错误等)。
如果需要其他跟踪,请使用System.Diagnostics.Trace或Debug,然后使用DebugView之类的工具进行监控。