有一个线程A循环向Com1串口发送命令,同样有个线程B在循环接受com1发来的数据,而主线程也会对com1发送单条命令。
当主程序发送的时候,A线程暂停,等主程序发完接受回复后再开始运转,我用过很多方式,Suspend\Resume,sleep,mutex,鞥等,但是当A线程重新启动后,发送的命令收不到数据了。
这样的多线程有没有好的模式,谢谢!

解决方案 »

  1.   

    同时只有一个线程能访问COM1,所以这是一个典型的生产者消费者问题,有两个生产者,一个消费者。
    解决建议:将写入命令放在队列中,使用一个线程读取队列命令访问COM1。
      

  2.   

    同时只有一个线程能访问COM1,所以这是一个典型的生产者消费者问题,有两个生产者,一个消费者。
    解决建议:将写入命令放在队列中,使用一个线程读取队列命令访问COM1
      

  3.   

    所有对Com口读写操作时,加锁就可以了。
    lock(this) {
    }如果要保持对COM口数据的及时读取,读取线程将数据将到队列中,用另一个线程解析,线程之间用Event同步。