かなりのデータベース作業を行う Winforms アプリケーションがあります。多くの読み取りとレコードの挿入を行います。データベースのサイズによっては、操作に最大 30 秒から 1 分かかる場合があります。現在、私のプログラムは問題なく動作しています。
私の問題は、プログラムがこれを実行している間、データベースの処理が完了するまで UI スレッドがブロックされることです。データベース関数をスレッドに入れたいのですが、この MSDN の記事によると、ADO.NET はスレッドセーフではありません。
UI にプログレス バーを表示する方法や、「ADO.NET はスレッド セーフではありません」を回避する方法はありますか? たぶん、継承する独自のクラスを作成するSqlDataReader
かSqlConnection
、スレッドセーフにするためです。これは可能ですか?