我正在使用 Nuget 的 Dapper 1.31。我有这个非常简单的代码片段,
string connString = "";
string query = "";
int val = 0;
CancellationTokenSource tokenSource = new CancellationTokenSource();
using (IDbConnection conn = new SqlConnection(connString))
{
conn.Open();
val = (await conn.QueryAsync<int>(query, tokenSource.Token)).FirstOrDefault();
}
当我按下F12时QueryAsync
,它指向我
public static Task<IEnumerable<T>> QueryAsync<T>
(
this IDbConnection cnn,
string sql,
dynamic param = null,
IDbTransaction transaction = null,
int? commandTimeout = null,
CommandType? commandType = null
);
它的签名上没有CancellationToken
。
问题:
- 假设整个解决方案没有编译器错误,为什么片段完全可构建?
- 请原谅我无法测试调用
tokenSource.Cancel()
是否真的会取消该方法,因为我不知道如何生成长时间运行的 sql 查询。真的会.Cancel()
取消方法并抛出OperationCancelledException
吗?
谢谢!