什么是异步编程?
从其它线程发起后,在一个新的单独线程上运行的操作。发起异步操作的线程不必等待异步操作完成。
简单来说,正常程序执行是从上到下逐语句执行,这就叫同步。
比如当你写同步程序的时候,你的代码中需要先后执行两个非常耗时间的操作,暂且把这两个操作取名了A 和 B,按照同步的方式,那就必须先执行A 等A执行完(假如耗费时间10秒)然后再执行B(假如耗时15秒),这样总共就耗时25秒。这个时候假如A和B能够同时执行,异步。 那么只需要耗时15秒就能够执行完。
异步编程不是万能的?
如果代码里面也没有网络或 I/O 绑定操作,异步对你代码基本没有什么性能的提升。
.NET 内置的异步方法
async 和 await 关键字。
async 和await 是C# 异步编程的核心,由他们定义的方法被称为异步方法。
public async Task<List<data>> GetA() { var data= await _data.GetAllListAsync(); return data; }
异步编程的核心就是 Task 和 Task<T> 对象,它们模拟了异步操作。
在 C# 中一个 Task 对象可以看作一个需要继续执行的操作,一个 Task<T> 对象可以看作一个在将来会返回 T 类型值的操作。这就像承诺将在操作完成后返回 T 类型的值