1

System.Data.SQLiteプログラムのデータと設定を (WPF リボン アプリケーションで) 保存 するために使用しています。

プログラムを開くと、開く SQLite データベースを選択するように求められ、SQLite データベースの設定テーブルからいくつかの設定 (プロジェクト名、最後に開いた時間など) を読み取ります。
アプリケーションが閉じられると、RibbonWindow.Closingイベントで が呼び出されますSQLiteConnection.Close()

ユーザーはデータベースを閉じて、新しいデータベースを開くこともできます。

何らかの理由で、これらの設定がプロジェクト情報ビューに表示されるまでに数秒かかる場合があります。ユーザーがこのプロセス中にアプリケーションの閉じるボタンをクリックするか、プロジェクト ファイルを閉じて別のファイルを開くことができるようにするInvalidOperationExceptionと、メッセージと共に がスローされますDatabase is not open

プログラムが閉じられたときにすべての操作を中断する最良の方法は何ですか.

4

1 に答える 1

2

SqlLite で接続プールを有効にするにpooling = true;は、接続文字列を入力します。これは ADO.Net 機能であり、バックエンド自体とは関係ありません。

それを使用する場合は、スレッドに接続を渡す代わりに、接続パラメーターを渡します。次に、各スレッドが独自の接続を管理します。

あなたがそれをしたくない場合。次に、オプションがあります。

スレッドがループで終了するまで待ちます。非常に短い場合を除き、少しがらくたです。

後でもう一度試してください。うーん、ユーザーはおそらくあなたのアプリに三本指の敬礼を与えて、とにかくそれを殺します。

スレッドを殺します、うーん!

スレッドを取得して独自のプールされていない接続を作成し、それを破棄します。NB接続の作成をやめると、DBMSを過負荷にすることができます。

ブール値のプロパティを追加し、接続を閉じるときに設定します。設定されていない限り、接続を閉じないでください。

接続プーリングを試してみてください。

于 2012-06-19T22:51:11.030 に答える