解决方案 »

  1.   

    A form里定义一个静态公共变量tempB form直接用A.temp
      

  2.   

    想要不丢失任何一个包,你就不能只传递一个变量,然后想怎么实时去取
    B本来就不该直接访问缓存,而是A将解析好的数据放到一个变量里供B读取
    如果想不丢,不要用一个变量,而是用队列(LIST或ArrayList),B取到里面的数据后就清空,A就只负责往里Add
    两个线程操作要加锁.
      

  3.   

    把A的数据放到一个自动增长的queue里,B 去取就是了A不需要自己维护一个缓冲区
      

  4.   

    如果你想让B 显示的是那种比较实时的,而且想减少缓存的话,可以试试吧B的显示时间注册用事件注册到A中,A在接收到数据后,可以处理一下,在可控的条件下调用B 的显示事件,这样B 完全不用自己去读取数据 自己去计算,自己维护自己的数据并且还要知道A都接收过什么数据,最难过的是A使用的缓存还不安全。
      

  5.   

    由于各类型的数据比较多,我就是把他们分类放到dictionary里,然后B定时去调用A.dictionary。问题是A如何通知B来取数据或者B定时自己来取?
      

  6.   


    如果数据很多呢,类型多,岂不是需要很多queue?A中接受的是多个单片机的数据,开多个线程分别去接收,每个单片机接受多个类型的数据。所以不太好。还有别的办法吗?谢谢!
      

  7.   

    先装箱,变成object类型,然后压入队列,B取出来之后拆箱
    而不是每种类型单独定义队列
      

  8.   

    因为接收到的是二进制数据,我需要转变为十进制。数据量比较大。1秒接收187个数据包,1个数据包4000多个点。我在A中分好了类,到B中直接显示,就不用在B中处理了,减少B的内存占用,便于B进行其他操作。你的意思是都放到B中在处理?
      

  9.   

    并且A中是接收多个单片机数据。开了多个线程。有多个dictionary,然后复制到一个dictionary再供B去调
      

  10.   


    我是把dictionary<>类型的公共变量设为A的属性,然后由B去调。“静态公共变量,可以直接放到一个公共的类里去定义”是让B去调公共类吗?怎么弄,有简单的例子吗?
      

  11.   

    因为接收到的是二进制数据,我需要转变为十进制->
    二进制,十进制,最终在内存里其实都是二进制,只不过转字符串显示的时候用不同格式转,跟数据本身没有任何关系减少B的内存占用->
    什么是内存占用?你定义了个队列或数组来存数据,这个数据就占用内存.而计算,只占用CPU而且CPU对于这种计算,是非常快的,比起你通信需要等待的时间,可以忽略不计
    你到底在哪个线程里运算,其实没什么区别.
      

  12.   

    取数据窗体把数据放到公共的list中,显示窗体多线程去取了操作显示。
      

  13.   

    意思是,变量可以放到公共类里,而不是放到窗体A中
    比如放到program里,所有窗体都可以访问,这样A和B不互相依赖
      

  14.   

    意思是,变量可以放到公共类里,而不是放到窗体A中
    比如放到program里,所有窗体都可以访问,这样A和B不互相依赖静态公共变量无所谓放哪里,只要你知道具体地址就行