当前位置:编程学习 > C#/ASP.NET >>

线程执行顺序

有4个类,分别开一个线程,怎样才能按照a-b-c-d的顺序执行呢?
窗体代码:
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            A a = new A();
            B b = new B();
            C c = new C();
            D d = new D();
            Thread t1=new Thread (new ThreadStart (a.a));
            Thread t2 = new Thread(new ThreadStart(b.b));
            Thread t3 = new Thread(new ThreadStart(c.c));
            Thread t4 = new Thread(new ThreadStart(d.d));
            t1.Start();
            t2.Start();
            t3.Start();
            t4.Start();
        }

类代码:
    class A
    {
        public void a()
        {
            //方法
        }
    }

    class B
    {
        public void b()
        {
            //方法
        }
    }

    class C
    {
        public void c()
        {
            //方法
        }
    }

    class D
    {
        public void d()
        {
            //方法
        }
    }

怎样才能按照a-b-c-d的顺序执行? --------------------编程问答-------------------- 通过ThreadPriority设置它们的优先级  
由高到低分别是Highest,AboveNormal,Normal,BelowNormal,Lowest
系统默认为ThreadPriority.Normal

t1.Priority=ThreadPriority.Highest;
t2.Priority=ThreadPriority.AboveNormal;
t3.Priority=ThreadPriority.Normal;
t4.Priority=ThreadPriority.BelowNormal;
--------------------编程问答-------------------- 用Join就可以了 --------------------编程问答-------------------- 既然是顺序执行,开多个线程做啥? --------------------编程问答-------------------- 同问,既然是顺序执行,开多个线程做啥? --------------------编程问答-------------------- 主要目的是想了解线程顺序执行的方法 --------------------编程问答-------------------- a-b-c-d
执行完a,然后执行b,执行完b,然后执行c,执行完c,然后执行d,应该怎样做呢? --------------------编程问答-------------------- 在b执行的代码中,调用aThread.Join()
在c执行的代码中,调用bThread.Join()
在d执行的代码中,调用cThread.Join()
--------------------编程问答-------------------- 或者可以用主线程调用aThread.Join(),再开始bThread
此时主线程阻塞直到aThread执行完毕,进入bThread,依此类推... --------------------编程问答-------------------- 最好能把代码贴出来,谢谢 --------------------编程问答-------------------- join()的方法肯定不行,如果用join(),主线程也阻止了,和不用线程一样 --------------------编程问答-------------------- 用线程池ThreaPool控制啊 --------------------编程问答-------------------- 晕倒~ --------------------编程问答-------------------- 在b执行的代码中,调用aThread.Join() 
在c执行的代码中,调用bThread.Join() 
在d执行的代码中,调用cThread.Join() 
--------------------------------------
很好,很强大!!! --------------------编程问答-------------------- 不是在button1_Click里面调用Join方法是不会阻塞主线程的
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,