首页 新闻 会员 周边 捐助

WindowsService Time控件的问题

0
[已解决问题] 解决于 2015-08-14 10:18

这是我写的服务的代码,帮忙看看为什么不执行操作

        Timer timers = new Timer(1000);//时间间隔为一秒
        protected override void OnStart(string[] args)
        {
            timers.Enabled = true;
            timers.Elapsed += this.timer3_Elapsed;
        }
        protected override void OnStop()
        {
        }
        private void timer3_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            try
            {
                DateTime day = DateTime.Now;
                string time = day.Hour.ToString() + day.Minute.ToString();                   
                if (time == "0940" || time == "094" || time =="940")
                {
                    timers.Stop();
                    bool add = GetAttendanceData.DownloadTmp_Click("192.168.1.201", 4370);   
                    if (add == true)
                    {
                        GetAttendanceData.Disconnect();       //关闭考勤机
                        timers.Start();
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                timers.Start();
            }
        }

玩世不恭的雷寅的主页 玩世不恭的雷寅 | 初学一级 | 园豆:38
提问于:2014-05-23 09:53
< >
分享
最佳答案
0
奖励园豆:5
Launcher | 高人七级 |园豆:45050 | 2014-05-23 10:52

 这个我也有看过,但是找不出来到底那里出的问题

玩世不恭的雷寅 | 园豆:38 (初学一级) | 2014-05-23 10:56

@玩世不恭的雷寅: 你咋知道它没有运行?

Launcher | 园豆:45050 (高人七级) | 2014-05-23 11:03

@Launcher: 服务是运行了,只不过没有成功执行程序

玩世不恭的雷寅 | 园豆:38 (初学一级) | 2014-05-23 11:11

@玩世不恭的雷寅: 请对照你的代码,告诉我你的“没有成功执行程序”究竟是对应的你的代码中的那一条或多条语句?

Launcher | 园豆:45050 (高人七级) | 2014-05-23 11:13

@Launcher: try 里面就是我要执行的代码  

玩世不恭的雷寅 | 园豆:38 (初学一级) | 2014-05-23 11:16

@玩世不恭的雷寅: 那么请问,你怎么知道 try 里面的代码没有执行?

Launcher | 园豆:45050 (高人七级) | 2014-05-23 11:23

@Launcher:   因为我没获取到数据

玩世不恭的雷寅 | 园豆:38 (初学一级) | 2014-05-23 11:24

@玩世不恭的雷寅: 你如何判断没有获取到数据?当然,还是请你从你给出的代码中来解释。

Launcher | 园豆:45050 (高人七级) | 2014-05-23 11:27

@Launcher: 

这句话就是我要获取数据然后保存到数据库,现在数据库没有数据

玩世不恭的雷寅 | 园豆:38 (初学一级) | 2014-05-23 11:28

@玩世不恭的雷寅: 你的意思是 “bool add = GetAttendanceData.DownloadTmp_Click("192.168.1.201", 4370);   ” 没有执行,还是没有执行成功?

Launcher | 园豆:45050 (高人七级) | 2014-05-23 11:29

@Launcher: 没有执行成功,  现在有一个问题就是服务自动停止是怎么回事?

玩世不恭的雷寅 | 园豆:38 (初学一级) | 2014-05-23 11:53

@玩世不恭的雷寅: 那就是说语句“bool add = GetAttendanceData.DownloadTmp_Click("192.168.1.201", 4370);”  执行了,但是执行过程中出了错误,那么此错误是否是以异常的形式表现出来了呢?如果是,请贴出异常信息。如果不是,请将此语句放置到 Console 程序中一步一步的调试,看看是哪句代码执行失败。

PS: 把你的服务的启动帐户修改为 Network Service。

Launcher | 园豆:45050 (高人七级) | 2014-05-23 13:09
其他回答(2)
0

应该先确认你服务有没有运行起来;在判断你的timer组件

Devin Mao | 园豆:596 (小虾三级) | 2014-05-23 10:53

 我的服务运行没问题,只不过就是不走操作 , 第一次写不知道怎么调试查看

支持(0) 反对(0) 玩世不恭的雷寅 | 园豆:38 (初学一级) | 2014-05-23 10:55
0

catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }

这样的写法出现在Window Service里面,你还能指望你的服务不自动停止?

Window Service本质上与程序没有太大差别,但是有许多事项需要注意的,建议你先Google一下编写Window Service注意事项,

比如以下文章:Windows Service 开发系列(一) 什么是Windows Service应用程序?

你抛出了Exception,外面没有代码接着,那Window一想,服务告诉我异常发生了,请求我关闭,Window就把你的服务关闭了。

这儿你写上Log.write(ex.message),让这个错误信息写到文本文件中去,就知道是什么错误了。

 

下面附上一段话,实在看不懂也请使用Google Translater,

If you're throwing the exception in Catch, and there's nothing above it to recatch it, then that will cause your service to stop. The OnStart() method needs a try/catch. If you don't want to stop the service when an Exception occurs, then you need to handle it (log it and move on, or whatever).

爱编程的大叔 | 园豆:30844 (高人七级) | 2014-05-23 12:08

谢谢,受教了,这几天一直出各种问题就是不知道那里出的问题,因为第一次写服务,也不会加操作日志

支持(0) 反对(0) 玩世不恭的雷寅 | 园豆:38 (初学一级) | 2014-05-23 12:17

@玩世不恭的雷寅: 

也可以写到Window的日志里面的。

Laucher的问法其实就是一个好的编程人员碰到问题自己一步一步排查的方法。

就象修电脑,不懂的人就说我的电脑坏了。你想想这样的信息有用吗?

支持(0) 反对(0) 爱编程的大叔 | 园豆:30844 (高人七级) | 2014-05-23 12:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册