小弟使用C#写了个Windows服务,把代码放在控制台程序跑,没什么问题,但就是在服务里,然后添加服务的时候就启动不起来,老是提示这个错误:代码如下:protected override void OnStart(string[] args)
{while (true)
{ var databaseModels = MongoDBHelper.Select<DataBaseServerConfigures>(Query.EQ("SystemAddress", BsonValue.Create(systemAddress)), MongoConnType.Center); var dataModel = MongoDBHelper.Get<ActivityConfigures>(Query.EQ("ActivityName", BsonValue.Create("系统Ping设置")), MongoConnType.Center); if (databaseModels.Count > 0)
{ if (dataModel != null)
{ foreach (var item in databaseModels)
{
MongoDBHelper.Insert<SystemPing>( new SystemPing()
{
ThisIP = prohelper.GetIPAddress(),
PingIP = item.DataBaseName,
SystemAddress = item.SystemAddress,
Status = prohelper.GetSystemPing(item.DataBaseName),
DateTimeNow = DateTime.Now
}, MongoConnType.Center);
}
Thread.Sleep(dataModel.TntervalSecond);
} else
{ foreach (var item in databaseModels)
{
MongoDBHelper.Insert<SystemPing>( new SystemPing()
{
ThisIP = prohelper.GetIPAddress(),
PingIP = item.DataBaseName,
SystemAddress = item.SystemAddress,
Status = prohelper.GetSystemPing(item.DataBaseName),
DateTimeNow = DateTime.Now
}, MongoConnType.Center);
}
Thread.Sleep(30000);
}
}
}
}什么原因啊?望大神帮忙看下!!
1 回答
![?](http://img1.sycdn.imooc.com/583d2ab20001050406400640-100-100.jpg)
习惯受伤
TA贡献885条经验 获得超1144个赞
OnStart中的代码必须放进一个单独的线程中执行,因为服务执行启动之后需要更新当前服务状态,如果在服务主线程中阻塞,就会导致查询服务状态失败,系统认为服务启动失败,所以抛除此错误
- 1 回答
- 0 关注
- 1259 浏览
添加回答
举报
0/150
提交
取消