2010-08-28 81 views
0

我有一個基於vC++ 2005的基於對話框的應用程序,我使用工作線程來做一些後臺處理。如何從工作線程訪問全局變量

工作者線程實現爲對話框類

我能夠訪問工作線程裏面的對話框類的變量是全局函數,但我不能夠得到一些他們自己的價值觀正確工作線程內

例如,我在對話框類中初始化了一個COM對象(使用CoInitilize),但我無法訪問它的最新值。我試圖在全局聲明它們,但仍然無法在線程中獲取它們的值。

請告訴我如何訪問工作線程內的COM對象

謝謝。

回答

1

如果您想使用其中的任何COM對象,則必須在您啓動的每個線程中調用CoInitialize函數。檢查此功能的MSDN文檔。請務必在退出線程之前取消初始化COM。

0

您需要有內存障礙訪問來自不同線程的變量時。 (並且您可能還需要保護變量不受併發訪問的影響。)

實現(兩者)最簡單的方法是使用您的平臺提供的任何種類的互斥鎖。例如,對於此,Win32 API有關鍵部分