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

要注意的是
在调用 async 标识的异步方法时 如果没有 await Task的方法 就同步进行
如果使用包含一个await的云苏菲 必须标注异步方法 async
如果没有用 await 标识

这样可以判断出 先将主方法同时的执行后太才会执行task里面的方法
1 Task执行一个异步方法
2 Task<TRsult> 执行 可以执行返回值的异步操作
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里面的任务全部执行
如何取消异步操作
创建
CancellationTokenSource source = new CancellationTokenSource(); Task<string> task = CommandBuySalt_CancelBuySalt(source.Token);
原文:https://www.cnblogs.com/wbg522963969/p/12497053.html