Developer --} Tester --} QA? Senior Tester ? Lead ? Manager?

一次拒绝重复造轮子的思路过程

上一篇 / 下一篇  2011-01-13 22:08:43 / 个人分类:分享

由于偶尔在家的时候还需要处理一下公司的任务,这时需要远程连接上去,让人郁闷的是动态IP,而且也没有域名。

网上搜索后,的确有相关VBS脚本能实现取外网IP地址,并发送IP到指定邮箱。做了一个计划任务之后,的确挺爽的。

但是脚本中取外网IP地址的那个网站不够稳定,经常访问不了,另外脚本太死板,每次都需要发送IP邮件。实际上当前检测到的IP,如果跟上次检测到的IP一样,就不需要发送邮件。由于VBS的基础太差,改写起来比较困难。就想到可以用PowerShell试试,反正PowerShell都很是强大,还能轻松调用.Net Framework的方法。

改写起来很轻松,但是添加这个脚本到Windows的计划任务之后,问题出现了,每次执行这个计划任务的时候,都会出现一个命令行窗口,中断工作。又搜索隐藏命令行窗口的解决方案,无果。

又想到做一个C#的程序,定时检查IP是否变动,若变发送IP到邮箱,自己的程序定义性高,不会干扰工作。但是又觉得不是在后台运行的,感觉不舒服。就想到做一个Windows的服务好了,服务是可以后台运行,一定干扰都没有,很清爽。

开始了一会,想到定时这个部分,难道要用Timer么?极度不爽,一直轮询判断,一直占着资源,而且还需要自己动手写代码实现。搜索之后,发现网上有个开源的作业调度框架——Quartz.NET,又想到一个这么简单的小程序还要用这么一个框架,难道不臃肿么?

之后灵光一闪,既然是个服务,还是可以利用Windows自带的计划任务。具体如下:

1. 计划任务里面只需要定时调用开启此服务的bat文件,使服务启动起来;
2.1. 编码实现当服务启动时,就去完成检查IP,发IP的事儿;
2.2. 并且做完这些事儿之后,调用停止服务的方法,使服务变成停止的状态;

这样就能充分利用Windows自带的计划任务的定时功能,少重复造了一个轮子。

TAG:

 

评分:0

我来说两句

Open Toolbar