這是將異步功能添加到IDbCommand接口的合理方式嗎?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」來僞造「任務」的協方差的效果。
此外,傳入的「self」實例不會從DbCommand繼承,在執行「self.ExecuteReader()」期間是否會消耗和阻塞線程池線程?
這裏的a link我完全實現了異步支持的IDb擴展。
謝謝
你打算把你的圖書館作爲nuget包嗎? – binki 2014-12-30 16:01:33