Windows服务:运行Notification方法时重新启动线程/任务会引发异常

问题描述

我对C#和Windows服务还很陌生,但是我运行了第一个服务来记录来自tcp客户端的数据。目前,我只是在OnStart期间启动Logging方法

    protected override void OnStart(string[] args)
         {
            MyDataLogger DataLogger = new MyDataLogger();
            MyDataLogger.StartLogging();
         }
 

StartLogging包含一些与数据库的连接以及tcp客户端上的通知定义。 到目前为止,它工作正常,但是我担心不希望的事件,例如失去tcp连接。当发生不希望的事件时,我会捕获它们并将其记录在错误日志中,但是我目前无法正常重启服务。提到一位同事为日志记录过程启动一个单独的线程,并在引发异常时重新启动它。到目前为止,我发现有不同的资料来源讨论了所需解决方案的Windows Service to run constantlyRestarting a thread in .NET (using C#)等几个部分。我也喜欢How to have a loop in a Windows service without using the Timer的答案,但不知道如何针对我的情况在Worker Function中提供通知而不是循环请求来实现它。 目前,我还有以下问题:

  1. 哪个Worker更适合我的目的:线程还是LongRunning任务?
  2. 如何在不使用循环Worker函数的情况下在OnStart中检查Workers状态?
  3. 如何处理MyDataLogger类中的异常以更改状态并重新启动Worker?
  4. 在异常期间处理所有客户端/数据库连接并在重新启动Worker时再次调用StartLogging是否正确?

非常感谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...