2
私はSQLiteでいくつかのことをやっていて、私は "トランザクション"中にスレッドをブロックしたい。以下のコードは正しく動作しますか?私はこのケースで開かれたトランザクションを持っている場合は、スレッドが正しいBeginTransaction
方法をカスタムトランザクションの実装 - スレッディングとロック
public class ThreadSafeSQLiteConnection
{
private readonly SQLiteConnection connection;
public static object TRANSACTION_LOCK = new Object();
public void BeginTransaction() {
Monitor.Enter(TRANSACTION_LOCK);
connection.BeginTransaction();
}
public void Commit() {
connection.Commit();
Monitor.Exit(TRANSACTION_LOCK);
}
public void Rollback() {
connection.Rollback();
Monitor.Exit(TRANSACTION_LOCK);
}
}
入ることができませんか?
@Groo - SQL Liteの専門家ではないことを私に許してください:)しかし、SqlLiteトランザクションは、競合状態から保護するために、並行接続で書き込みしようとしていますか? – Polity
申し訳ありませんが、私はこれを考えていませんでした。はい、SQLiteはスレッドセーフです。しかし、私はどんな場合でも 'TRANSACTION_LOCK'を非公開にします。 – Groo