DBに接続し、データベースからデータを繰り返し(1分間隔で)読み取るアプリケーションを作成しています。これは RSS フィード リーダーのようなものですが、ローカル DB を備えています。データの読み取りに失敗した場合は、接続を再確立しようとします。フォームに配置された TADOConnection と TADOQuery を使用して設計しました (したがって、動的な作成はありません)。私の目的は、ユーザーの観点からアプリケーションを「生きている」状態に保つことです。そのため、接続部分と読み取り部分を 1 つのスレッドに配置しました。問題は、それを最善の方法で行う方法です。
私のデザインは次のようになります。
- アプリケーションの起動時に、フォームとともに TADOConnection と TADOQuery が作成されます。
- 別のスレッドで接続を開く (TADOConnection)
- 接続が確立された場合は、接続スレッドを一時停止し、フォームでタイマーを開始します。これにより、データ読み取りのために別のスレッドが定期的に再開されます
- 読み取りスレッドが成功した場合、何も起こらずフォーム タイマーが続行されます。失敗した場合、スレッドはタイマーを停止し、接続スレッドを再開します。
TADOConnection または TADOQuery を動的に作成する方が良いですか、それとも問題ではありませんか? たとえば、スレッド内のクリティカル セクションなどを使用する方がよいでしょうか (同時にコンポーネントにアクセスできるのは 1 つだけで、スレッドは 1 つだけです)。
ご提案いただきありがとうございます