C# Task 及 async Task

  1. 总结:符合异步方法语法的情况下,
    await 访问异步方法后面的代码行,一定是子线程, 
    Task 接受 访问异步方法后面的代码行 ,不Result 不会阻止主线,后面一定时主线程,
    如果Result,需要阻止当前线程,
  2.  使用 async task 尝试 ,
    异步方法本身不会节省 请求时间,但可以减轻主线程压力;
    异步方法内默认不会开启新线程(语法可通过),除非手动开启;通常手写异步方法需要task.run 开启新新增,
    语法才能保证正确。需要特别注意的是,在task.run之前为主线程,之后,线程会变为子线程,包括 awiat第一次await 后 catch finally 中 如图:

    如果 异步方法中,没有await的调用,不会开启新的线程,符合语法的await 可以开启新线程,包括Task.Dealy(n)
    如果 不用await 调用异步方法,调用异步方法 的前后代码都是主线程。
    注意: 在 await 后(通常有task.run),后面开启新线程,所有
     await Task.Delay(5000);//阻塞子线程
     Thread.Sleep(5000);//阻塞子线程,
  3. Task 方法
     方法声明为Task 的 ,方法中不能有 不允许await,
      Task 方法中有 开启了子线程,  被新线程体内和被调处await 之后的都为子线程,说明了阻塞,但新起线程之后则为 主线程,未被阻塞
    如图:
    标题

    代码中如果去掉 await ,值打印1个子线程 ,也不阻塞主线程 如图
    标题

  4. Task 接受TaskAsync 异步方法,Result之前,不会阻止主线程,等所有子线程完成,主线程顺序完成后才执行Result后代码

  5. Task 接受TaskAsync 异步方法,不会阻止主线程,
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值