C#异步编程

1、什么是异步编程

 异步方法是只在执行当前方法的同时,可以异步的去调用其他方法(异步方法)不会堵塞当前线程!

2、如何使用异步方法用 async 修饰 通常配合await运算符和 Task 异步任务一起使用

 

 

 要注意的是 

 在调用 async 标识的异步方法时 如果没有 await Task的方法 就同步进行

如果使用包含一个await的云苏菲 必须标注异步方法 async  

如果没有用 await 标识  

 

 

 这样可以判断出 先将主方法同时的执行后太才会执行task里面的方法

3 Task 分为两种

  1 Task执行一个异步方法

  2 Task<TRsult> 执行 可以执行返回值的异步操作

4. 异步方法的返回类型必须为 void、Task、Task<TResult> 中的其中一种

1) void,表示无返回值,不关心异步方法执行后的结果,一般用于仅仅执行某一项任务,但是不关心结果的场景。
2) Task,表示异步方法将返回一个 Task 对象,该对象通常用于判断异步任务是否已经完成,可以使用 taskObj.Wait() 方法等待,或者 taskObj.IsCompleted 判断。
3) Task<TResult>,表示异步方法将返回一个 Task<TResult> 对象,该对象的 Result 属性则是异步方法的执行结果,调用该属性时将阻塞当前线程(异步方法未执行完成时)。

归纳一下:void 不关心结果Task 只关心是否执行完成Task<TResult> 不止关心是否执行完成,还要获取执行结果。

 

 

 

 

task<result>

 

 

 1) 以上代码 task.Result 会阻塞当前线程,

如果调用多个TASK呢

 

 

 会将task里面的任务全部执行

如何取消异步操作

创建

   CancellationTokenSource source = new CancellationTokenSource();
    Task<string> task = CommandBuySalt_CancelBuySalt(source.Token);

 

 


 

 


 

 

 

posted @ 2020-03-15 13:08  子小子小  阅读(186)  评论(0编辑  收藏  举报