ODBC クラスおよびスレッド
MFC 4.2 は、以前のバージョンと異なり、MFC ODBC クラスに対するマルチスレッドをサポートしています。ただし、DAO クラスに対するマルチスレッドはサポートしていないので注意してください。
ODBC クラスに対するマルチスレッドのサポートにも制限があります。ODBC クラスは、ODBC API をラップしているため、ビルド元のコンポーネントのマルチスレッド サポートに依存します。たとえば、多くの ODBC ドライバーはスレッド セーフではありません。したがって、このようなスレッド セーフでないドライバーで使用された MFC ODBC クラスはスレッド セーフでありません。ドライバーがスレッド セーフかどうかを確認して使用してください。
マルチスレッド アプリケーションを作成する場合、複数のスレッドで同一のオブジェクトを操作するときは注意が必要です。たとえば、2 つのスレッドで同一の CRecordset オブジェクトを使用すると、データを取得する際に問題が発生する可能性があります。一方のスレッドでのフェッチ操作が、他方のスレッドでフェッチしたデータを上書きする場合があります。通常、個別のスレッドで MFC ODBC クラスを使用する場合は、開いている CDatabase オブジェクトをスレッド間で共有して、同一の ODBC 接続を使用します。つまり、各スレッドで別個の CRecordset オブジェクトを操作します。開いていない CDatabase オブジェクトを別のスレッドの CRecordset オブジェクトに渡さないように注意してください。
[!メモ]
複数のスレッドで同一のオブジェクトを操作する場合は、クリティカル セクションなどの適切な同期機構を実装します。ただし、保護されない操作 (Open など) もあるので注意してください。保護されない操作については、複数のスレッドから同時に呼び出されないように確認する必要があります。
マルチスレッド アプリケーションの作成方法の詳細については、「マルチスレッド」を参照してください。