C# Windows服务问题

小弟使用C#写了个Windows服务,把代码放在控制台程序跑,没什么问题,但就是在服务里,然后添加服务的时候就启动不起来,老是提示这个错误:

549603-20160520165951076-28258241.png

代码如下:


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);
                        }
                    }

                }
        }

什么原因啊?望大神帮忙看下!!

猫出没
浏览 1260回答 1
1回答

习惯受伤

OnStart中的代码必须放进一个单独的线程中执行,因为服务执行启动之后需要更新当前服务状态,如果在服务主线程中阻塞,就会导致查询服务状态失败,系统认为服务启动失败,所以抛除此错误
打开App,查看更多内容
随时随地看视频慕课网APP