我正在查看MS 参考中的 DbDataReader(也是 DbCommand)的代码,但无法弄清楚 ReadAsync() 方法中的异步是什么。
virtual public Task<bool> ReadAsync(CancellationToken cancellationToken) {
if (cancellationToken.IsCancellationRequested) {
return ADP.CreatedTaskWithCancellation<bool>();
}
else {
try {
return Read() ? ADP.TrueTask : ADP.FalseTask;
}
catch (Exception e) {
return ADP.CreatedTaskWithException<bool>(e);
}
}
}
ReadAsync 方法只是调用 Read 方法并返回一个完整的任务。这不会像直接调用 Read 一样阻塞调用线程吗?
我在 DbCommand ExecuteReaderAsync 和其他方法中注意到了相同的模式。他们只是调用同步版本并返回已完成的任务。
我在这里想念什么?
更新:我没有错过任何东西,正如@PeterBons 很好地解释的那样(也在文档中)。我仍然不喜欢它,但这是我的问题。