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);