首页新闻找找看学习计划

关于Windows服务启动时即轮询插入数据的问题

0
悬赏园豆:20 [已解决问题] 解决于 2015-07-31 13:45

我写了一个Windows服务程序,设定是每隔两小时去解析一个XML,序列化进一个实体对象后插入到数据库表中,但是服务第一次启动时要隔两小时才会触发事件。怎么样让服务每次启动即执行插入数据事件,但是以后每次都是隔两小时插入?

以便以谢的主页 以便以谢 | 初学一级 | 园豆:119
提问于:2015-07-31 10:02
< >
分享
最佳答案
0

重载OnStart()方法,参考C#写Windows服务

收获园豆:13
dudu | 高人七级 |园豆:41309 | 2015-07-31 10:23

我重写的OnStart()方法,这里面已经指定每隔两小时执行一次了,但是第一次执行它就会隔两小时。。。

protected override void OnStart(string[] args)
{
ServiceController serviceController = new ServiceController("AeGISSMSInfoService");
serviceController.Start();

IsStart = "1";
// TODO: 在此处添加代码以启动服务。
timer = new System.Timers.Timer(); //间隔10秒

timer.AutoReset = true;
timer.Interval = 2*3600*1000; //10000; // //24*3600*1000; //设置计时器事件间隔执行时间为2小时
timer.Enabled = false; //执行一次
timer.Elapsed += new ElapsedEventHandler(GrabXMLData);

timer.Start();

WriteLog(string.Format(
"=====================================→启动舆情系统xml接口数据抓取服务({0})←=====================================\r\n",
DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")));
}

 

以便以谢 | 园豆:119 (初学一级) | 2015-07-31 10:40

@以便以谢: 建议试试System.Threading.Timer,将其构造函数中的dueTime参数设为0,一启动就会执行。

dudu | 园豆:41309 (高人七级) | 2015-07-31 10:48

@dudu: 好的,我试试,dudu出马,必属精品~

以便以谢 | 园豆:119 (初学一级) | 2015-07-31 10:50
其他回答(2)
0

你确定不是在逗我吗?你的Windows Service 程序是自己写的吧?都已经知道怎么两个小时候执行,

居然不知道怎么启动时执行,这个你去洗洗脸,洗洗脚,放松一下应该就知道了。

收获园豆:2
爱编程的大叔 | 园豆:29784 (高人七级) | 2015-07-31 10:19

就像我把火箭送上天却不知如何造火箭一样~

支持(0) 反对(0) 以便以谢 | 园豆:119 (初学一级) | 2015-07-31 10:24

@以便以谢: 

土方法:加一句 GrabXMLData在onStart里面就行了。

不土的方法,用线程执行一次GrabXMLData就行了啊。

 

你确定不是编程编晕了吗?

支持(0) 反对(0) 爱编程的大叔 | 园豆:29784 (高人七级) | 2015-07-31 10:55

@爱编程的大叔: 你确定你看完了?- -!

支持(0) 反对(0) 以便以谢 | 园豆:119 (初学一级) | 2015-07-31 13:45

@以便以谢: 确实到现在我也没看懂,你们都太厉害了。要不你帮我解释一下?

支持(0) 反对(0) 爱编程的大叔 | 园豆:29784 (高人七级) | 2015-07-31 14:12
0

楼上正解。

收获园豆:5
冲动 | 园豆:394 (菜鸟二级) | 2015-07-31 10:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册