WINFORM中线程优先的问题

WINFORM上位机1秒一次采集数据,另一方面会接收下发指令
但下发指令没有立即得到执行,估计是采集没有处理完
怎样确保下发指令立即执行呢?

你想下发指令立即执行,那你单独搞一个线程写下发,别等到采集周期一起下发啊
因为下发属于不定期的任务,而且频率低,你可以使用task或者线程池来搞,而不是一个单独的线程死循环
或者就用主线程写个异步任务
除非你下位机通信走的是串行总线,否则以太网的话,你完全可以建立另外一个连接,不冲突

我不多说了,如果愿意更换思路
可以考虑,优先级队列+数据防抖

优先级队列可以让你具备执行权重等级处理
至于数据防抖---是可选项,假设下轮优先选了下发,那么下轮可能会留下2个采集任务,但是采集本身是个时效性任务,已经我们没必要快速下2个指令,所以需要进行防抖过滤,这个是可选操作(主要看自己,如果你觉着多下几个采集也没毛病可以不做防抖)


这个你愿意改思路,如果不愿意改思路,觉着园子才是真理。那就没办法了,只能跟园子的人玩啥线程挂起,线程释放,关闭定时器,打开定时器,加lock这类玩意了

谢谢,我用大佬的task解决了这个问题
唯一有点奇怪的是,之前有下发,也看到下发语句有执行,但就是不执行下发动作