C#编程:Task的使用

在这里插入图片描述

线程部分

Task的使用

Task的说明

暂时只知道这玩意是实现异步多线程的使用法宝

Task的简单使用

			//单个使用
            Task.Run(()=> { 
            
                //丢到后台运行的耗时业务逻辑代码
            });
            //多个使用
            Task[] T = new Task[3];

            T[0] = Task.Run(()=>
            {
                AA();
            });

            T[1] = Task.Run(() =>
            {
                BB();
            });

            T[2] = Task.Run(() =>
            {
                CC();
            });

Task的超时检测

            if (!Task.WaitAll(T, 12000))
            {
            	//12000为根据需要填写的延时,12000等于12秒
                System.Console.WriteLine("超时结束!");
            }

Task的带参数及返回值使用

带返回值
			var task3 = Task.Run(() =>
            {

                return false;
            });
            System.Console.WriteLine($"运行结果  {task3.Result}");

			//多个使用和返回值
			

带一个参数和返回值
			var reset = Task.Run(() => isTest("ss"));
            var t = reset.Result;

            System.Console.WriteLine($"运行结果!{t}");
	        private static bool isTest(string isno)
	        {
	            return true;
	        }
多个使用和带返回值
			Task<bool>[] T = new Task<bool>[3];

            T[0] = Task.Run(()=>
            {
                AA();
                return false;
            });

            T[1] = Task.Run(() =>
            {
                BB();
                return true;
            });

            T[2] = Task.Run(() =>
            {
                CC();
                return false;
            });

            
            if (!Task.WaitAll(T, 12000))
            {
                System.Console.WriteLine($"超时结束!{T[0].Result} {T[1].Result} {T[2].Result}");
            }
带多个参数和带返回值
            var ss = Task.Run(() => Test(new int[] { 1, 2, 3}, new string[] { "AAA", "BBB"}));
            var tt = ss.Result;
            
            System.Console.WriteLine($"{tt}");
 private static bool Test(params object[] obj)
        {
            int num = obj.Length;
            int[] axisnos = null;
            string[] AXSI = null;

            //此处必须事先知道需要传入的数组类型
            axisnos = (int[])obj[0];
            AXSI = (string[])obj[1];

            System.Console.WriteLine($"num is {num}");

            for (int j = 0; j < axisnos.Length; j++)
            {
                System.Console.WriteLine($"{axisnos[j]} ");
            }
            for (int j = 0; j < AXSI.Length; j++)
            {
                System.Console.WriteLine($"{AXSI[j]} ");
            }
            
            return true;
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值