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
ますか?
ありがとうございました!