C# 多线程编程以及常用方法

一、1. 线程是什么,为什么使用线程不赘述

        2. 使用线程要引入命名空间 System.Threading;

        3. 线程函数通过委托(ThreadStart,ParameterizedThreadStart)传递,可以不带参数,也可以带object参数(只能有一个参数),可以用一个类或结构体封装参数。

        4. 新开一个线程,线程函数通过委托传递,方式很多。如下

        private void button1_Click(objectsender, EventArgs e)
        {
            //创建线程t1,t2,t3,t4,方式各异
            Thread t1 = new Thread(Run1);                  
            Thread t2 = new Thread(new ThreadStart(Run1));
            Thread t3 = new Thread((ThreadStart)Run1);
            Thread t4 = new Thread(new ParameterizedThreadStart(Run2));   //带参的函数,ParameterizedThreadStart是委托,参数类型object,故write2参数必须是object类型
            t1.Start();    //运行该线程,执行t1的Run1函数
            t2.Start();
            t3.Start();
            t4.Start(200);   //t4执行Run2函数,传参200
        }
        private void Run1()
        {
            lock (locker)
            {
                money += 100;
            }

            Thread.Sleep(500);

        }
        private void Run2(objectmny)
        {
            lock (locker)
            {
                money += int.Parse(mny.ToString());
            }

            Thread.Sleep(500);

            MessageBox.Show(money.ToString());
        }


       5.线程常用方法

         5.1 创建并启动一个线程,Run作为要执行的方法,线程状态变为Running

                Thread   t1 = new Thread(newThreadStart(Run));

                t1.Start();

         5.2 线程挂起一段时间(3秒),线程状态改为WaitSleepJoin,然后继续执行(状态Running)。即线程暂停3秒

               t1.Sleep(3*1000);

          5.3  终止线程,在调用此方法的线程t1引发 ThreadAbortException,以开始终止此线程的过程。调用此方法通常会终止线程,线程状态变为stopped。Abort之前最好判断下线程当前状态,用到IsAlive属性

               if (t1.IsAlive)  //如果此线程已经开始但尚未正常终止或中止,则为true,否则为 false

               {

                       t1.Abort();   //t1.Abort(Object),带参数的可以提供一个异常信息

                }

               //如果Abort 一个尚未启动的线程,该线程将中止Start 调用。如果Abort 被阻止或正在休眠的线程,该线程中断然后终止。

           5.4 设置优先级。分为5个优先级:Highest,AboveNormalNormalBelowNormalLowest,优先级从高到低,但是操作系统不保证遵循这个优先级

                  t1.Priority =ThreadPriority.Highest;     //先设置优先级,再start

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值