使用C#写了个Windows服务 10
小弟使用C#写了个Windows服务,把代码放在控制台程序跑,没什么问题,但就是在服务里,然后添加服务的时候就启动不起来,老是提示这个错误:"等待XX服务的连接超时(30...
小弟使用C#写了个Windows服务,把代码放在控制台程序跑,没什么问题,但就是在服务里,然后添加服务的时候就启动不起来,老是提示这个错误:
"等待XX服务的连接超时(30000毫秒)"
代码如下:
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);
}
}
}
}
什么原因啊?望大神帮忙看下!! 展开
"等待XX服务的连接超时(30000毫秒)"
代码如下:
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);
}
}
}
}
什么原因啊?望大神帮忙看下!! 展开
2个回答
展开全部
借花献佛:开机的时候,受控程序保证是没有启动的,而且你程序给它设置了让它启动,它可能也不会立即有响应(因为系统还忙着呢,根本顾不过来),你试试先加个延迟,启动服务的时候先等2分钟,再开始后面的逻辑。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
加日志看错误消息。还有Windows系统日志有可能也记录了。
追问
windows日志错误显示与上面我写的一样,都是超时,,这就是纠结的地方,我刚才把代码改了,
估计应该是while循环的问题
追答
我个人感觉,OnStart只是为了启动你的一系列操作,应该尽快【返回】。而你在里面弄了这么多sleep,Windows会认为你的启动失败。把你这些耗时操作方到另一个单独函数里就应该可以了。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询