C#多线程个人总结

线程基础使用

c#利用Thread类创建一个线程,这个类接受一个委托作为参数,可以是ThreadStart或者ParameterizedThreadStart,然后调用Start方法开始执行线程。ThreadStartParameterizedThreadStart的区别在于,前者不接受参数,后者接受参数。

创建一个控制台程序,利用ThreadStart委托创建一个线程:

        using System.Threading;
        public static void CallToChildThread()
        {
            Console.WriteLine("子线程1");
        }

        static void Main(string[] args)
        {
            Console.WriteLine("创建一个线程");
            Thread childThread = new Thread(new ThreadStart(CallToChildThread));
            childThread.Start();
            Console.ReadLine();
        }

 下面利用ParameterizedThreadStart创建一个线程,并接受参数:

        public static void CallToChildThread(object value)
        {
            Console.WriteLine(value);
        }

        static void Main(string[] args)
        {
            Console.WriteLine("创建一个线程");
            Thread childThread = new Thread(new ParameterizedThreadStart(CallToChildThread));
            childThread.Start("hzkzb");
            Console.ReadLine();
        }

注意一点,方法接受的参数类型必须为object,否侧会报错。

实际使用中可以省略ThreadStartParameterizedThreadStart直接传入方法名,编译的时候会自动进行匹配。

 

前台线程与后台线程

  • 前台线程:所有前台线程执行完毕后,应用程序才能关闭;
  • 后台线程:哪怕后台线程正在执行,应用程序也能强行关闭。

用IsBackground属性设置线程是否后台线程,默认是flase。

创建一个控制台程序

        public static void CallToChildThread()
        {
            Console.WriteLine("子线程1");
            Thread.Sleep(5000);//使线程暂停五秒
            Console.WriteLine("子线程2");
        }

        static void Main(string[] args)
        {
            Console.WriteLine("创建一个线程");
            Thread childThread = new Thread(CallToChildThread);
            childThread.Start();
            childThread.IsBackground = true;
        }

当childThread.IsBackground = true;的时候,主程序在childThread 子线程还没执行完就立刻关闭了程序,由于是个控制台程序所以一闪而过,此时childThread 是个后台线程。

把childThread.IsBackground = true;注释掉,此时childThread 是个前台线程,这个时候childThread 子线程执行完,主程序才能关闭。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值