到底是进程还是线程?
试试Mutex?

解决方案 »

  1.   

    你这个问法我当你已经会一个线程的用法,那么。。一个线程控制三个这个问题好象有点问题,如果你要在主窗体分别控制三个子窗体中的线程,你可以写三个方法(或一个方法传不同参数)来调用
    比如:
    BaseForm:T1()
    Form1:BaseForm  T1(){}
    Form2:BaseForm  T1(){}
    Form3:BaseForm  T1(){}
    MainForm:
    void CallT(BaseForm f)
    {
        f.T1();
    }private void button1_Click(...)
    {
        Form1 f=new Form1();
        CallT(f);
    }private void button2_Click(...)
    {
        Form2 f=new Form2();
        CallT(f);
    }private void button3_Click(...)
    {
        Form3 f=new Form3();
        CallT(f);
    }
      

  2.   

    不同的需求要使用不同的同步方式,没有具体的需求,那就给一个通用的线程教程:http://www.albahari.com/threading/part2.aspx。总的来说,一个是保护共享资源不被多个线程同时修改,另一个是控制线程的阻塞和继续。一般就是lock和xxxResetEvent(Slim)用的比较多。也可看下http://bbs.csdn.net/topics/390978972#post-398844623是之前类似的问题。
      

  3.   

    窗体之间的通讯,通过窗体的属性、方法、事件来通讯,也就是通过窗体对象之间的正常关系来通讯。比如说A窗口调用了B窗口的a方法,或者B窗口触发的c事件可以被A窗口监听并处理,等等。跟什么线程没有什么直接关系。线程是具体干什么事儿的时候才需要考虑的,例如需要把1+2+3的结果给计算出来,可是计算1+2只后需要把中间结果推送到电灯泡上去“闪三下”,然后再计算3+3,这时候就可以在子线程中控制电灯泡,而不用阻塞主线程计算3+3的动作。这个“控制电灯泡”的动作可能需要5ms,也可能需要250ms,总之不会阻塞计算,而且做完了该做的事情就自动结束了(实际上应该从系统线程中来分配线程,因此所谓“线程结束”的含义就是在执行完“点电灯泡”的用户定义方法只后,.net会自动将线程归还到系统线程池中)。不要没事也编出什么“一个线程控制3个线程”来。需要并发调用某几个方法,就可以使用线程。方法在一瞬间执行完,线程也就结束了。