C# 多线程编程基础——怎么创建和执行多个线程


一、本文的主要介绍内容

   主要介绍怎么动态创建若干个线程,并且执行他们。需要注意的是,多个线程执行的时候,可能会比主线程慢结束。意思是,主程序(main函数)结束了,他们却还在执行。为了克服这个问题,我们可以用while语句阻塞主程序,在每个线程执行完毕之后,再继续执行主程序。语句用法是:

    //为了确保 Main 函数不会尝试在辅助线程有机会执行结束之前将它终止

    //Main 函数将一直循环,直到辅助线程对象的 IsAlive 属性设置为 false

            //必须用while,表示线程都已经执行完了

            for (int i = 0; i < parts; i++)

            {

                while (threads[i].IsAlive)

                {                

                    ;

                }

            }

注意while里面那个分号是必需的,不要忘记了。

二、如何创建和执行线程

1.创建线程

System.Threading.Thread[] threads = new System.Threading.Thread[parts];

这跟数组创建差不多

2.给每个线程赋值

这跟数组赋值也差不多,但可能比较不好理解。

            for (int i = 0; i < parts; i++)

            {

                    string str_l = linkArray[i];

                    Program p = new Program(str_l);

                    System.Threading.Thread t = new System.Threading.Thread(new System.Threading.ThreadStart(p.doWork));

                    threads[i] = t;

                    threads[i].Name = "Thread" + i.ToString();                

                

            }

注意在这个语句中,类Program必须有类似以下的结构:

Class Program

{

//成员变量初始化

..........

public Program(T link)//T指任何类型都可以,或者不带参数也行

        {

             //初始化;

        }

//其他语句

...........

        public void doWork()

        {

              //每个线程需要执行的程序语句内容

         }

 

}

线程执行的函数必须是无返回值无参数的,类似 void dowork()的结构,这点要注意。

3.执行线程

  for (int i = 0; i < parts; i++)

            {

                threads[i].Start();

            }

4.阻塞线程,这个要视情况而定,前面已经介绍过了。

  该语句简单来写就是 while(thread[i].IsAlive);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的狐狸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值