这段时间在学写C#上位机,在实际开发过程中,遇到各种各样的的功能需求及想法需要实现,一边学一边编写程序,个人觉得有点意思,就算做个笔记吧。也就是这系列文章的出发点,我命名为简单粗暴法系列。
关键词就是:简单、粗暴
回到正题,开发过程中,遇到2个问题:
1、画时刻线的问题,即每半小时及整点画下时刻线,用在生产线每天的状态时间轴(正常、待料、故障等)上标识时刻。
2、每日班后(例如18:30)需要把当日状态时间轴记录起来。
查询网上定时方法有各种各样、各种委托与事件,自己整理后得到最简单粗暴方法:
直接上代码:
这段代码要放在每秒的 timer_Tick事件里去,我们编写上位机一般都会用一个timer,用于在窗体某个角落显示实时时间,所以每秒定时器一般都会有,直接放进去就好了,以上这段实现每整分钟及半分钟的事件。
这段代码同样也需要放在每秒的 timer_Tick事件里去,以上这段实现每整点及每半小时的事件。
用这段代码来划时刻线,效果如下图:(整点为黑长线段,半小时为红短线段)
以上实现了画时刻线的功能,结合其他事件将生产线每班状态画满,即可实现产线时间轴功能。
以下为定点定时功能:
这段代码实现中午12点吃饭事件,及18:30下班回家事件。
结合以上3段代码,即可实现每段时间、定时定点、指定时间等各种定时运用场景的要求了。
是不是很简单粗暴?
代码来源出处:作者陈极光C#固定时间执行指定事件(观察者模式+异步委托) - 陈极光 - 博客园 (cnblogs.com)
当然以上代码缺点很多,例如代码比较low、单线程阻断、没有使用委托与事件,也没有用异步的方法等等,用于简单功能还是可以的,也算符合题意“简单粗暴”了。