解决方案 »

  1.   

    用队列或者线程lock都行,目的就是要保证同一时刻只能执行一个发送
      

  2.   

    使用 “锁”lock,private Object lockObject = new Object();
            private void LoadValue(int value)
            {
                lock (lockObject)
                {
                      // todo;
                }
            }
      

  3.   

    数据B穿插在数据A
    你是担心数据A和B混起来?
    为什么我觉得这种担心是没有必要的啊
      

  4.   


    没用过LOCK,那个lockObject就算是互斥变量是么
      

  5.   


    没用过LOCK,那个lockObject就算是互斥变量是么
    不是互斥变量,表示的是 多个线程可能访问同一个方法。
    比如你的发送数据操作与按钮操作,可能调用的是同一个方法,这时候使用lock 就可以起到 一个“按顺序执行”的作用。
      

  6.   


    没用过LOCK,那个lockObject就算是互斥变量是么
    看msdn上的解释,http://msdn.microsoft.com/zh-cn/library/c5kehkcz.aspx
      

  7.   

    其实你完全可以使用一个全局bool变量控制
    当它是true的时候,发送接收完A和A1之后紧接着发送B,接收B1,然后把它重新设置成false
    这样就不用纠结多线程了
      

  8.   

    然后你按钮按下,就把它设置成true就好了
    反正串口通信也不要求很高的实时性,1秒之内能响应不就得了
      

  9.   

    更进一步的,你可以在接收B1的时候判断接收到的参数是否合法,不合法或没有收到反馈,说明发送失败,你可以不让它变回false,等下一秒的时候就会重新发送,直到发送成功.
    这样你按钮里代码很简洁,就是要求发送就完了,怎么发,什么时候发,都不用管.
      

  10.   


    确实很简单!!的确,我的项目,没有那么高的实时性。A相当于一个单片机的主函数,B相当于中断。get it
      

  11.   


    确实很简单!!的确,我的项目,没有那么高的实时性。A相当于一个单片机的主函数,B相当于中断。get it
      

  12.   


    确实很简单!!的确,我的项目,没有那么高的实时性。A相当于一个单片机的主函数,B相当于中断。get it