黑马程序员—— c#中的多线程

  为什么要用多线程呢?

1.       让计算机“同时”做多件事情,节约时间

2.       后台运行程序,提高程序的运行效率,也不会使主界面出现无响应的情况

3.       多线程可以让一个程序“同时”处理多个事件

4.       计算机cpu大部分时间处于空闲状态,浪费了cpu资源。

.net中如何让实现多线程的呢?

线程肯定也是要执行一段代码的。所以要产生一个线程,必须先为该线程写一个方法,这个方法中的代码就是该线程运行所要执行的代码(找个人来做一件事)。线程启动时,通过委托调用该方法。线程启动时,调用传过来的委托。委托就会执行相应的方法,实现线程执行方法。

  namespace _02多线程

{

    public partial class Form1 : Form

    {

        publicForm1()

        {

            InitializeComponent();

            TextBox.CheckForIllegalCrossThreadCalls=false;

        }

 

        privatevoid button2_Click(objectsender,EventArgs e)

        {

            //创建线程对象,传入线程要执行的方法

            ThreadthreadFirst =new Thread(counttime);

            //将线程设¨置为后台线程¨(当所有前台线程结束后,后台线程会自动退出)

            threadFirst.IsBackground = true;

            //启动线程执行方法

            threadFirst.Start();

        }

        voidcounttime()

        {

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

            {

            }

            MessageBox.Show("循环完ª?");

        }

       //以下代码验证了单线程带来的缺点

        privatevoid button1_Click(objectsender,EventArgs e)

        {

            counttime();

        }

     void changeTxt()

        {

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

            {

                inta = int.Parse(textBox1.Text);

                Console.WriteLine(Thread.CurrentThread.Name +",a=" + a);

                a++;

                textBox1.Text = a.ToString();

              

            }

        }

        //下面代码表现了多线程方法重入问题

        privatevoid button3_Click(objectsender,EventArgs e)

        {

            Threadthread1 = new Thread(changeTxt);

            thread1.Name = "t1";

            thread1.IsBackground = true;

            thread1.Start();

 

            Threadthread2 = new Thread(changeTxt);

            thread2.Name = "t2";

            thread2.IsBackground = true;

            thread2.Start();

        }

 

    }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值