场景
我们要做数据库迁移,S库和T库,当S库表结构改变,程序并不能侦测,导致无法实时同步,此时就需要有个定时任务去刷新表结构,然后如果改变则刷新上下文配置。这里就涉及到选择定时任务还是开线程的问题
分析
定时器
优点:使用简单,仅需设置一个时长和其OnTime事件即可使用。
缺点:之前写定时器去刷银行接口,我一直任务是并行执行的,但是在一次失误中,导致整个定时任务堵塞卡死,导致了系统崩了,才知道定时器是串行的,而且占用的是主线程的资源,看似并行实际上是串行,所以窗体的消息队列一旦堵塞,就会造成系统假死或者运行缓慢。
多线程
如果“同时”执行的多个任务,多线程相对复杂一些,占用系统资源略多一些,所以如果能不用多线程时尽量不用。
结果
因为不是多个任务同时进行,而且我是希望定时去刷库,所以最后我采用定时器。