3

SQLiteデータベースを使用してC#アプリケーションをプログラミングしているとDatabase Locked(5)、出力ログに次のメッセージが表示されることがあります。私はそれが起こらないようにしたいのですが、私のデータベースに対して実行された複数のアクションが私にこの例外を与えることを知っています。

質問:

SQLiteDatabaseが他のクエリの処理でビジーであるかどうかを確認する方法はありますか?

4

1 に答える 1

3

マルチスレッド アプリケーションを作成している場合、必要な知識を持っていても問題は解決しません。表示される頻度は低くなるかもしれませんが、以前と同じ問題が発生することがあります。

なんで?「ロックしてる?」と聞いた瞬間から 「その場合はロックさせてください」と言った瞬間に、別のスレッドが飛び込んでロックした可能性があります。

タイムアウトが発生しない限り、私は例外を処理し、それぞれのケースで何をすべきかを決定します。

さらに、SQLite は本質的にシングルユーザー (個人としてのユーザーではなく、「データベースを使用するもの」としてのユーザー) データベースであるため、これがジョブにとって間違ったツールになることはないと考えるかもしれません。

于 2013-03-01T12:43:33.013 に答える