这是向 IDbCommand 接口添加异步功能的合理方法吗?
public async static Task<IDataReader> ExecuteReaderAsync(this IDbCommand self) {
DbCommand dbCommand = self as DbCommand;
if (dbCommand != null) {
return await dbCommand.ExecuteReaderAsync().ContinueWith(task => (IDataReader)task.Result);
} else {
return await Task.Run(() => self.ExecuteReader());
}
}
具体来说,我不完全确定使用“ContinueWith”来伪造“Task”的协方差的效果。
此外,在传入的“self”实例不从 DbCommand 继承的不太可能的情况下,在执行“self.ExecuteReader()”期间是否会消耗和阻塞线程池线程?
这是我完整实现异步支持的 IDb 扩展的链接。
谢谢