当前位置:   article > 正文

C# Task 及 async Task_c# task async

c# task async
  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 异步方法,不会阻止主线程,
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/104552
推荐阅读
相关标签
  

闽ICP备14008679号