C# 关于asyns await Task.Run(()=>{ })以及线程池

C# 关于asyns await Task.Run(()=>{ })

#region Task.Run() 使用样例
        public void TaskTest()
        {
            Task.Run(async () =>
            {
                await GetTask(DateTime.Now,DateTime.Now);
            });
        }

        public async Task<bool> GetTask(DateTime startDate, DateTime endDate)
        {
            return await Task.FromResult(true);
        }
#endregion
 /// <summary>
    /// 执行一个耗时操作
    /// </summary>
    private async static void Do()
    {
        //基本只有 IO/Web请求 会比较耗时,原因是他们会有大量数据从磁盘获取
        Console.WriteLine("Do Executing!!!! Current Thread Id: " + Thread.CurrentThread.ManagedThreadId);

        // 模拟一个耗时操作:
        Thread.Sleep(3000);

        //await 找到一个人来帮忙做 比较麻烦的事件
        //一个 await 就是额外开一个线程
        await Task.Run(()=> {
            Thread.Sleep(3000);
        });

        await Task.Delay(3000);//异步延迟 3000 毫秒
        //访问 GitHub
        HttpClient client = new HttpClient(); //WebClient 已经被淘汰了,现在大家更热衷于使用 HttpClient
        // WebRequest 也可以使用
        var res = await client.GetStringAsync("https://github.com");
        
        #region 以下等效于上一句
         var res1 = client.GetStringAsync("https://github.com");
         res1.Wait();
         string result=res1.Result;
        #endregion
        
        Console.WriteLine("Do Executing!!!! Current Thread Id: " + Thread.CurrentThread.ManagedThreadId);
    }

记录一个关于线程池的用法

static async System.Threading.Tasks.Task Main(string[] args)
    {
        try
        {
       ThreadPool.QueueUserWorkItem(new WaitCallback(Calculate), 1000);
        Console.WriteLine("Hello World!");
            Console.ReadKey();
        }
        catch (Exception ex)
        {
        }
   }
static void Calculate(object num)
        {
            int sum = 0;
            int n = (int)num;

            for (int i = 1; i <= n; i++)
            {
                sum += i;
            }

            Console.WriteLine("1到" + n + "的总和是:" + sum);
            Console.WriteLine($"Calculate方法线程ID:{Thread.CurrentThread.ManagedThreadId.ToString()};当前时间:【{DateTime.Now}】");
        }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值