C#写的Windows服务的问题

火星大能猫 2010-06-24 05:26:03
C#写的一个windows服务,我想在服务出错的时候自动重新启动.
但又希望能手动控制服务的停止,能否实现??
如果不能,手动控制服务的功能可以取消.怎么实现?



Helper.LogError(ex);
//发生错误后自动重启服务
ServiceController serControl = new ServiceController("LedIPTransfer");
if (serControl.Status == ServiceControllerStatus.Running)
{
Helper.LogError("停止服务");
Thread.Sleep(1000);
serControl.Stop();
Helper.LogError("服务停止中");
serControl.WaitForStatus(ServiceControllerStatus.Stopped);
Helper.LogError("已经停止");
serControl.Start();
Helper.LogError("服务已经重新启动!");


Helper.LogError("服务停止中");
serControl.WaitForStatus(ServiceControllerStatus.Stopped);
Helper.LogError("已经停止");

现在问题是运行到服务停滞中后就停止运行下面的代码了.
...全文
178 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
火星大能猫 2010-06-28
  • 打赏
  • 举报
回复
3Q,楼上的.结贴了.
zhanggd614 2010-06-26
  • 打赏
  • 举报
回复
我不是道能不能自动重启服务

但是在服务出错的情况下 你不需要停止服务
你可能停止服务所用的机制
再重新执行
火星大能猫 2010-06-26
  • 打赏
  • 举报
回复
看来只能再另外写一个服务进行监视了
john_0 2010-06-25
  • 打赏
  • 举报
回复
关注中....
anbin0814 2010-06-25
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分
宝_爸 2010-06-25
  • 打赏
  • 举报
回复
如果一个程序退出了,那么它能再启动它自己吗?

答案是 不能。

你需要另一个服务或者程序来控制这个 windows服务。
捷哥1999 2010-06-25
  • 打赏
  • 举报
回复
如果是标准的去实现服务,那么肯定是可以在服务管理器中,进行重启、停止、设置自动手动启动方式的。
你可以看看下面的文章,了解一下基本的实现。

我对你的问题,是这么理解的:
serControl.WaitForStatus(ServiceControllerStatus.Stopped);
Helper.LogError("已经停止");
//你是用ServiceController serControl = new ServiceController("LedIPTransfer");来引用服务的
//而你这个代码就是在LedIPTransfer服务中运行,所以停止后,下面的代码自然不能运行了呀!
serControl.Start();
Helper.LogError("服务已经重新启动!");


1、Creating a C# Service Step-by-Step: Lesson I
http://www.codeproject.com/KB/install/csharpsvclesson1.aspx
2、Creating a C# Service Step-by-Step Lesson II
http://www.codeproject.com/KB/install/csharpsvclesson2.aspx

柳晛 2010-06-25
  • 打赏
  • 举报
回复
不知道能不能用两个服务互相控制
liuxiuming 2010-06-24
  • 打赏
  • 举报
回复
手动停止的服务本来就有的,你可以直接在“服务”中停止就可以了。
服务已经停止了,下面的当然不执行了,因为你的“重新启动”功能也是包含在这个服务中的
也不知道说的对不对,我是这么理解的
可以用事务来做吧?

110,525

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧