c# - Windows 服务:运行通知方法时重新启动线程/任务会引发异常
问题描述
我对 C# 和 Windows 服务还很陌生,但我的第一个服务正在运行以记录来自 tcp 客户端的数据。目前我只是在 OnStart 期间启动 Logging 方法
protected override void OnStart(string[] args)
{
MyDataLogger DataLogger = new MyDataLogger();
MyDataLogger.StartLogging();
}
StartLogging 包含一些到数据库的连接和 tcp 客户端上的通知定义。到目前为止,它运行良好,但我担心诸如丢失 tcp 连接之类的不良事件。当发生不希望的事件时,我会捕获并将它们记录在错误日志中,但我目前无法正确重新启动服务。一位同事提到为 Logging 过程启动一个单独的线程,并在引发异常时重新启动它。到目前为止,我发现不同的来源讨论了几个部分,例如Windows 服务不断运行和在所需解决方案的 .NET 中重新启动线程(使用 C#)。我也喜欢How to have a loop in a Windows service without using the Timer的答案但不知道如何通过 Worker Function 中的通知而不是循环请求来实现它。目前我还有以下问题:
- 哪个 Worker 更适合我的目的:线程还是 LongRunning 任务?
- 如何在不使用循环 Worker 函数的情况下检查 OnStart 中的 Worker 状态?
- 如何处理来自 MyDataLogger 类的异常以更改状态并重新启动 Worker?
- 在异常期间处理所有客户端/数据库连接并在重新启动 Worker 时再次调用 StartLogging 是否正确?
提前非常感谢!
解决方案
推荐阅读
- arrays - 重复的切片键值
- haskell - Traversables 的自然法则是什么意思?
- npm - npmjs.com 上二进制包的 URI?
- java - ActionListener 和动态(?)GUI
- python - Python代码中可能_never_出现的字符序列示例?
- clojure - 比较两个字符串并返回匹配的单词数
- python - 如何在 IIS 上使用 CGI 部署 Python 应用程序?
- c# - How to pass parameters from C # to assembler through registers?
- python - 我在 Flask 代码中找不到 404,我不知道为什么
- java - 无法在 adListener 中使用 sharedPreference