C#之Thread类和Task类的简单使用

Thread类的简单使用

基本用法一:调用方法:

void Method_NewThread2()
            {
                for (int i = 0; i < 10; i++)
                {
                    Console.WriteLine($"[newThread2]:{i}");
                }
            }
Thread newThread2 = new Thread(Method_NewThread2);

调用的该方法可为同一个方法中的方法,也可为同一个类中的静态方法或同一个类中的非静态方法(实例方法)

基本用法二:匿名委托

Thread thread5 = new Thread(delegate ()
            {
                for (int i = 0; i < 10; i++)
                {
                    Console.WriteLine($"委托型[{i}][id:{Thread.CurrentThread.ManagedThreadId}][name:{Thread.CurrentThread.Name}]");
                }
            })
            { Name = "委托型的线程" };

基本用法三:Lambda表达式

Thread newThread1 = new Thread(() =>
            {
                for (int i = 0; i < 10; i++)
                {
                    Console.WriteLine($"[newThread1]:{i}");
                }
            })
            { Name = "新线程1" };

线程类:将Thread封装在一个类中,以至于继承自该封装类的所有类都具有多线程能力。

public abstract class MyThreads
    {
        Thread thread1=null;
        Thread thread2=null;
        Thread thread3=null;
        public abstract void Run1();
        public abstract void Run2();
        public abstract void Run3();
        public void Start1()
        {
            if (thread1 == null)
            {
                thread1 = new Thread(Run1);
                thread1.Name = "1号线程";
                thread1.Start();
            }
        }
        public void Start2()
        {
            if(thread2 == null)
            {
                thread2 = new Thread(Run2);
                thread2.Name = "2号线程";
                thread2.Start();
            }
        }
        public void Start3()
        {
            if (thread3 == null)
            {
                thread3 = new Thread(Run3);
                thread3.Name = "3号线程";
                thread3.Start();
            }
        }
    }
    public class MyThread : MyThreads
    {
        public override void Run1()
        {
            Console.WriteLine($"此为[{Thread.CurrentThread.Name}]所实现的方法");
        }
        public override void Run2()
        {
            Console.WriteLine($"此为[{Thread.CurrentThread.Name}]所实现的方法");
        }
        public override void Run3()
        {
            Console.WriteLine($"此为[{Thread.CurrentThread.Name}]所实现的方法");
        }
    }
    internal class Program
    {
        static void Main(string[] args)
        {
            MyThread myThread = new MyThread();
            myThread.Start1();
            myThread.Start2();
            myThread.Start3();
            Console.ReadLine();
        }
    }

Task类的简单使用

三种方式创建Task

static void Main(string[] args)
        {
            Task task1 = new Task(() =>
            {
                Console.WriteLine($"通过创建Task对象后调用其Start函数   [{Task.CurrentId}]");
            });
            task1.Start();
            Task task2 = Task.Run(() =>
            {
                Console.WriteLine($"通过调用Task的静态方法Run   [{Task.CurrentId}]");
            });
            Task task3 = Task.Factory.StartNew(() =>
            {
                Console.WriteLine($"通过Task工厂   [{Task.CurrentId}]");
            });
            Console.ReadLine();
        }

Task任务后有返回值

static void Main(string[] args)
{
    Task<int> task = Task.Factory.StartNew(() =>
    {
        int sum = 0;
        for (int i = 0; i < 10; i++)
        {
            sum += i;
        }
        return sum;
    });
    Console.WriteLine(task.Result);
    Console.ReadLine();
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

a_dafei

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

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

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

打赏作者

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

抵扣说明:

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

余额充值