Когда для приведенного ниже кода установлено время ожидания в 1 секунду, но Транзакция может выполняться без ошибок.
try
{
var databasePath = $@"{AppDomain.CurrentDomain.BaseDirectory}test.db";
var connection = new SQLiteAsyncConnection(databasePath);
await connection.SetBusyTimeoutAsync(TimeSpan.FromSeconds(1));
var t1 = Task.Run(async () =>
await connection.RunInTransactionAsync(db => Thread.Sleep(5000)));
var t2 = Task.Run(async () =>
{
Thread.Sleep(TimeSpan.FromSeconds(2));
await connection.RunInTransactionAsync(db => Thread.Sleep(5000));
}
);
await Task.WhenAll(t1, t2);
}
catch (InvalidOperationException ex)
{
Console.WriteLine(ex.Message);
}
У меня есть следующие вопросы:
1 . Что такое тайм-аут по умолчанию?
2 Кто-нибудь знает, как вызвать ошибку блокировки в этом случае?
Я хочу знать тайм-аут, чтобы я мог воспроизвести проблему блокировки, вызванную несколькими обновлениями в базе данных.
https://github.com/praeclarum/sqlite-net ver 1.5.231
Какое значение по умолчанию sqlite3_busy_timeout? https://dba.stackexchange.com/questions/203933/what-is-the-default-timeout-value-in-sqlite-connection-string-used-for