2010-08-28 85 views
0

我有一个基于vC++ 2005的基于对话框的应用程序,我使用工作线程来做一些后台处理。如何从工作线程访问全局变量

工作者线程实现为对话框类

我能够访问工作线程里面的对话框类的变量是全局函数,但我不能够得到一些他们自己的价值观正确工作线程内

例如,我在对话框类中初始化了一个COM对象(使用CoInitilize),但我无法访问它的最新值。我试图在全局声明它们,但仍然无法在线程中获取它们的值。

请告诉我如何访问工作线程内的COM对象

谢谢。

回答

1

如果您想使用其中的任何COM对象,则必须在您启动的每个线程中调用CoInitialize函数。检查此功能的MSDN文档。请务必在退出线程之前取消初始化COM。

0

您需要有内存障碍访问来自不同线程的变量时。 (并且您可能还需要保护变量不受并发访问的影响。)

实现(两者)最简单的方法是使用您的平台提供的任何种类的互斥锁。例如,对于此,Win32 API有关键部分