强调下,是两个子线程,不是线程跟UI之间的通讯,理解成跟UI通讯者请勿回贴,以免误导其他同学
尝试过SynchronizationContext,但是仅有UI线程才有SynchronizationContext,子线程如何有SynchronizationContext?
使用公共变量的方式感觉不太可靠,也不希望使用。

解决方案 »

  1.   

    不用纠结与是否不许是全局变量。例如我们声明一个对象var x= new MyRecord();然后就可以把这个对象传递给两个线程所执行的程序作为参数。或者我们也可以换一种写法,仍然是var x= new MyRecord();然后我们就可以分别用两个线程来调用这个x(引用的)对象的方法1和方法2,而方法里边就可以通过this.的方式访问对象自己的数据。我已经无法举出具体的东西了,因为从这个空洞的假设出发,实在没有什么东西好讨论。只有当你有了更加具体的需求,才能更加具体的看看你到底遇到了什么问题。就一般而言,过程本来就可以访问对象以及对象的属性,不同线程所执行的过程可以访问数据,这没有什么好纠结的,编程者也不应该存在什么“心理障碍”。
      

  2.   

    这个项目中,有16个子线程是完成端口的子线程,另有不超过50个子线程是跟别的公司的服务器通讯的,必须独立连接,不断有心跳包等检测,否则就认为断开了。
    完成端口的线程会根据索引记录去跟某个线程通讯,并不是固定跟某一个。你说使用公共对象等等好用吗?
    我决定使用.NET 4.0的Task了。目前仅纠结完成端口的工作线程是否还要,或者说是否还使用完成端口架构。
      

  3.   

    建议用全局的都是不负责任的人。实在不行的话,可以使用线程去调用某个class,然后在这个class中创建数据交互的缓冲区。