在winForm应用程序中,如何实现多个窗口只用一个线程,多个窗口都是使用那一个线程。。
例如,我做一个用户在线的列表(主程序),其内写了个线程用来监听来自其他用户的信息,我也可以点选列表中的用户与其进行聊天!(只用一个线程监听!)

解决方案 »

  1.   

    使用单例模式, 这样始终就只有一个线程实例在运行了.public sealed class SingleThread        //阻止发生派生, 而派生可能会发生实例
    {
        //在第一次引用类的任何成员时创建实例.公共语言运行库负责处理变量初始化
        private static readonly Thread myThread = new Thread(Threadfunction);           private SingleThread() { }    public static SingleThreadGetInstance()
        {
            return myThread ;
        }
    }
      

  2.   

    單線程和多線程的概念,檔主似乎沒搞清楚...
    -------------------------------------STA:   Single-Thread   Apartment,   中文叫单线程套间。就是在COM库初始化的时候创建一个内存结构,然后让它和调用CoInitialize的线程相关联。这个内存结构针对每个线程都会有一个。支持STA的COM对象只能在创建它的线程里被使用,其它线程如果再创建它就会失败。   
       
       
     MTA:   Mutil-Thread   Apartment,中文叫多线程套间。COM库在进程中创建一个内存结构,这个内存结构在整个进程中只能有一个,然后让它和调用CoInitializeEx的线程相关联。支持MTA的COM对象可以在任意线程里被使用。多有针对它的调用都会被封装成为消息。   
       
       
     其实STA和MTA是COM规定的一套线程模型,用于保障多线程情况下你的组件代码的同步。比如说有一个COM对象它内部有一个静态变量   gHello,那么这个对象无论生成多少实例对于gHello在内存中只能有一份,那么如果有两个不同的实例在两个线程里面同时去读写它,就有可能出错,所以就要就要有种机制进行同步保护,STA或者MTA就是这种机制。
      

  3.   

    我企望的是主程序中监听到的内容填充到指定的窗口内!例如:每个新建的窗口的text属性都不一样的!主线程中监听到的内容就根据其text进行填充数据!
      

  4.   

    我企望的是主程序中监听到的内容填充到指定的窗口内!例如:每个新建的窗口的text属性都不一样的!主线程中监听到的内容就根据其text进行填充数据!应该如何做!
      

  5.   

    异步调用。
    textBox.Invoke(Delegate method,
        params Object[] args)