首页 新闻 会员 周边

C# windows服务

0
[待解决问题]

    我有一个用C#写的Windows服务,连接的是其他服务器的SQL数据库,现在我这个Windows服务遇到网络中断的情况下就stop了,在不关机的情况下,如果后续网络恢复正常,不重新手动启动该服务,如何才能让这个Windows服务继续运行,并且在遇到stop或者异常的情况下记录下这个日志?

青鋒的主页 青鋒 | 初学一级 | 园豆:5
提问于:2017-07-17 09:51
< >
分享
所有回答(4)
0

1:遇到stop或者异常的情况下记录下这个日志 try (难道还要其他的记录日志 ) 异常了直接写日志(或者使用第3方组件)、或者注册全局异常处理。

2:定义一个线程。定时 请求监听网络是否异常 (类似心跳包的概念、如果连续3次 多长时间没有响应默网络中断。)

3:其他的方法其他人补充.... 

s_p | 园豆:138 (初学一级) | 2017-07-17 10:06
0

简单的说,就是提高你Windows 服务的健壮,不要出现一个小问题就DOWN了。

写一个服务半天就够了,写一个好的服务需要半个月,半年。

爱编程的大叔 | 园豆:30839 (高人七级) | 2017-07-17 10:24

 有好的建议吗?

支持(0) 反对(0) 青鋒 | 园豆:5 (初学一级) | 2017-07-17 10:26

@青鋒: 找出错误,单步调试+日志记录。

网络中断你是可以模拟的,这是开发级测试,你都知道是什么情况造成故障的,就很容易模拟了。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30839 (高人七级) | 2017-07-17 10:42
0

我目前做的windows都是使用定时器循环做事,可能发生异常的地方使用try catch,发生异常写log,然后不影响流程继续走下去

MrNice | 园豆:3450 (老鸟四级) | 2017-07-17 12:08
0

个人认为最好的是做一个守护进程,就像杀毒软件一样,专门检查网络状况,根据情况启动或停止另一个进程

这个守护进程需要写的轻巧可靠,几乎不占用系统资源

无泪之魂 | 园豆:287 (菜鸟二级) | 2017-07-18 10:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册