タスクバーに配置され、(SQLConnectionを介して)データベースを定期的にチェックするアプリケーションがあります。データベースに到達できない場合は、通知アイコンに赤いステータスが表示されるだけで、他には何も表示されません。これは、ユーザーが施設間を移動するラップトップを使用し、データベースにアクセスできるのは内部ネットワーク上またはVPN経由で接続されている場合のみであるためです。
私が抱えている問題は、データベースにアクセスできない場合でも、通知アイコンのコンテキストメニューが応答するようにしたいということです。現在、データベースが接続を試みているときにユーザーがメニューを操作しようとすると、接続の試行によってスレッドがロックされます。
私が望んでいるのは、データベース接続が別のスレッドで行われることですが、スレッド間で接続オブジェクトを共有することは悪いことであることを私は知っています。データベースが接続されたら、元のスレッドからデータベースをクエリする必要があります。これを行うための良い方法はありますか?
新しいスレッドでrusを実行し、接続が失敗したかどうかを確認するだけの関数を使用できることはわかっています。それで成功した場合は、元のスレッドが移動して独自のデータベースオブジェクトに接続できます。しかし、その方法は悪い回避策のようです。アイデア?
ありがとう!
提案をありがとう-私はそれらからかなりのことを学びました。結局、最初からやるべきことをやった。メイン(UI)スレッドは、定期的なデータベース更新が必要な場合はいつでも、新しいスレッド(データベースオブジェクトの作成と接続を含む)を開始するだけです。
したがって、HenkHoltermanが元のメッセージへのコメントで提案したように、データベースを作成して別のスレッドで操作を実行する必要はありませんでした。
VS2010にアップグレードしたら、SqlConnection.OpenAsyncの使用に間違いなく興味があります。
再度、感謝します。