| Tips and Tools for Windows |
安全なファイル転送方法
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つのみとし、スレッド間で共有することです。