问题描述
我对C#和Windows服务还很陌生,但是我运行了第一个服务来记录来自tcp客户端的数据。目前,我只是在OnStart期间启动Logging方法
protected override void OnStart(string[] args)
{
MyDataLogger DataLogger = new MyDataLogger();
MyDataLogger.StartLogging();
}
StartLogging包含一些与数据库的连接以及tcp客户端上的通知定义。 到目前为止,它工作正常,但是我担心不希望的事件,例如失去tcp连接。当发生不希望的事件时,我会捕获它们并将其记录在错误日志中,但是我目前无法正常重启服务。提到一位同事为日志记录过程启动一个单独的线程,并在引发异常时重新启动它。到目前为止,我发现有不同的资料来源讨论了所需解决方案的Windows Service to run constantly和Restarting a thread in .NET (using C#)等几个部分。我也喜欢How to have a loop in a Windows service without using the Timer的答案,但不知道如何针对我的情况在Worker Function中提供通知而不是循环请求来实现它。 目前,我还有以下问题:
- 哪个Worker更适合我的目的:线程还是LongRunning任务?
- 如何在不使用循环Worker函数的情况下在OnStart中检查Workers状态?
- 如何处理MyDataLogger类中的异常以更改状态并重新启动Worker?
- 在异常期间处理所有客户端/数据库连接并在重新启动Worker时再次调用StartLogging是否正确?
非常感谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)