Tips and Tools for Windows

IThumbCtl (CThumbCtl) のBUG

Windows CEのインストールプログラムの作り方

IIS+IEでのログイン操作を再度強制させる方法

安全なファイル転送方法

ATL 7.0 のCIsapiExtensionクラスはWindows98上で、デストラクタで異常終了する

ADOで、ACCESS DB( Jet Provider ) の Connection オブジェクトのLockさせない使い方

ADODB.Connection オブジェクトはスレッドセーフな作りになっているため、複数のスレッドから元々あるスレッドでCoCreateInstanceされたConnectionオブジェクトを使い回しても正常に機能します。ただし、スレッド間の同期処理のためパフォーマンスに劣るという説明がMSDNの中で書かれています。

この記述はDBがSQL Serverの時は正しいが、ProviderがJET(ACCESSのDB)の場合は状況が逆転します。JETのProviderは複数Connectionからの処理が重くなるとやりくりがうまくいかなくなるらしく、その場合長時間のLockエラーが生じることがあります。このLockは数分間(?)続くことがあり、事実上ハングアップです。この問題を回避するには単純に、Connectionオブジェクトを1つのみとし、スレッド間で共有することです。