Tôi đang sử dụng Dapper 1.31 từ Nuget. Tôi có đoạn mã này rất đơn giản,mã thông báo hủy trên Dapper
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();
}
Khi tôi bấm F12 trên QueryAsync
, nó trỏ tôi để
public static Task<IEnumerable<T>> QueryAsync<T>
(
this IDbConnection cnn,
string sql,
dynamic param = null,
IDbTransaction transaction = null,
int? commandTimeout = null,
CommandType? commandType = null
);
Không có CancellationToken
trên chữ ký của mình.
Câu hỏi:
- Tại sao đoạn hoàn toàn thể xây dựng giả rằng có được không có lỗi biên dịch trên toàn bộ giải pháp?
- Hãy tha thứ cho tôi vì tôi không thể kiểm tra nếu gọi
tokenSource.Cancel()
thực sự sẽ hủy phương thức vì tôi không biết cách tạo truy vấn sql đang chạy dài. Liệu các.Cancel()
thực sự hủy bỏ phương pháp và némOperationCancelledException
?
Cảm ơn bạn!
'param' động sẽ mất khá nhiều bất cứ điều gì. Những gì bạn đang làm giống như truyền mã thông báo hủy như một tham số cho 'Console.WriteLine (chuỗi, tham số params [])'. Chỉ vì bạn có thể vượt qua nó không có nghĩa là chức năng hỗ trợ hủy bỏ. –