windows 服务中的设计和错误处理
Design and Error handling in windows service
我必须设计 windows 服务,我有一些问题:
- 正确的错误处理,如果出现错误怎么办
服务?他是否继续启动并登录?错误记录
在事件查看器中?他在坠落吗?
- 长 运行 会怎样?你怎么确定一切
运行ning是否按要求,他没有卡住?
- 如何处理高内存消耗、内存不足或其他错误
那没有被写入日志?
- 处理用户 - 如果为用户 A 创建日志并更改为
用户乙?重写还是从同一点继续?
- 如何处理时间? - 服务是否自动启动?
谢谢。
对于错误处理,我能推荐的最好的方法是利用 try / catch
个案例。通过这种方式,您可以确保处理意外发生的情况,并且您可以尝试纠正它或彻底关闭服务。请记住,异常不会传播到线程范围之外,因此您需要在每个线程中处理它们。
为了能够判断服务是否运行良好,您可以定期登录事件日志来了解服务的运行情况。如果您对每个线程都进行了正确的 try / catch,它应该会顺利进行。在 C# 中,您可以使用 log4net and the EventLogAppender 在事件日志中记录关键/错误信息。
如果您的服务无缘无故地导致内存使用率过高,则很可能是内存泄漏。 Microsoft 有一个名为“.Net CLR profiler”的免费工具,可让您正确分析您的服务并查看到底是什么导致了泄漏。
除非您正在处理受用户保护的文件(在这种情况下,您需要查阅服务的“登录”选项卡以为其提供适当的凭据),否则您的服务不应依赖于任何登录用户。服务 运行 独立于计算机上的用户。
可以将服务设置为自动启动、仅按需启动或完全禁用。
我必须设计 windows 服务,我有一些问题:
- 正确的错误处理,如果出现错误怎么办 服务?他是否继续启动并登录?错误记录 在事件查看器中?他在坠落吗?
- 长 运行 会怎样?你怎么确定一切 运行ning是否按要求,他没有卡住?
- 如何处理高内存消耗、内存不足或其他错误 那没有被写入日志?
- 处理用户 - 如果为用户 A 创建日志并更改为 用户乙?重写还是从同一点继续?
- 如何处理时间? - 服务是否自动启动?
谢谢。
对于错误处理,我能推荐的最好的方法是利用
try / catch
个案例。通过这种方式,您可以确保处理意外发生的情况,并且您可以尝试纠正它或彻底关闭服务。请记住,异常不会传播到线程范围之外,因此您需要在每个线程中处理它们。为了能够判断服务是否运行良好,您可以定期登录事件日志来了解服务的运行情况。如果您对每个线程都进行了正确的 try / catch,它应该会顺利进行。在 C# 中,您可以使用 log4net and the EventLogAppender 在事件日志中记录关键/错误信息。
如果您的服务无缘无故地导致内存使用率过高,则很可能是内存泄漏。 Microsoft 有一个名为“.Net CLR profiler”的免费工具,可让您正确分析您的服务并查看到底是什么导致了泄漏。
除非您正在处理受用户保护的文件(在这种情况下,您需要查阅服务的“登录”选项卡以为其提供适当的凭据),否则您的服务不应依赖于任何登录用户。服务 运行 独立于计算机上的用户。
可以将服务设置为自动启动、仅按需启动或完全禁用。