共用方式為


在提供者內支援無限制執行緒

更新:2007 年 11 月

所有的 OLE DB 提供者類別都為安全執行緒 (Thread-Safe),而且登錄項目已適當設定。支援無限制執行緒以協助在多使用者環境中提供高層級的效能,是很好的作法。若要讓提供者維持安全執行緒,您必須確認已經適當地封鎖程式碼。每當寫入或儲存資料時,您必須封鎖關鍵區段 (Critical Section) 的存取。

每個 OLE DB 提供者樣板物件都有自己的關鍵區段。若要使封鎖更容易,您建立的每個新類別都必須為樣板類別,且引數必須是父類別名稱。

以下範例說明如何封鎖程式碼:

template <class T>
class CMyObject<T> : public...

HRESULT MyObject::MyMethod(void)
{
   T* pT = (T*)this;      // this gets the parent class 

// You don't need to do anything if you are only reading information

// If you want to write information, do the following:
   pT->Lock();         // engages critical section in the object
   ...;                // write whatever information you wish
   pT->Unlock();       // disengages the critical section
}

如需如何使用 Lock 和 Unlock 保護關鍵區段的詳細資訊,請參閱多執行緒:如何使用同步類別

您也必須驗證所覆寫的任何方法 (例如 Execute) 都為安全執行緒。

請參閱

概念

使用 OLE DB 提供者樣板