线程函数中访问成员变量的方法
2008-01-16 18:28
246 查看
用AfxBeginThread启动线程,线程的执行函数有两种定义的方法:
1. 全局函数:UINT threadMessageBoxAdapter( LPVOID lParam );
2. 静态成员函数:static UINT threadMessageBoxAdapter( LPVOID lParam );
我们一般的经验是,在线程中使用变量都必须是全局变量,成员变量定义成static,才能在线程函数中访问成员变量。
这里说明一种在线程函数中访问成员变量的方法:
这里定义Thread类:
class Thread
{
public:
static UINT threadMessageBoxAdapter( LPVOID lParam );
UINT threadMessageBoxProc( );
private:
CString strThreadText;
};
线程函数的实现:
UINT Thread::threadMessageBoxAdapter( LPVOID lParam )
{
CTestVectorDlg* obj = ( CTestVectorDlg* )lParam;
return obj->threadMessageBoxProc();
}
UINT Thread::threadMessageBoxProc()
{
CString strThreadText;
strThreadText.Format( _T( "%s" ), _T( "Thread adapter" ) );
AfxMessageBox( strThreadText );
return 0;
}
使用AfxBeginThread启动线程:
CWinThread* thread;
thread = AfxBeginThread( threadMessageBoxAdapter, this );
这样,当线程启动后,弹出”Thread Adapter”的信息,说明成功访问成员变量。
1. 全局函数:UINT threadMessageBoxAdapter( LPVOID lParam );
2. 静态成员函数:static UINT threadMessageBoxAdapter( LPVOID lParam );
我们一般的经验是,在线程中使用变量都必须是全局变量,成员变量定义成static,才能在线程函数中访问成员变量。
这里说明一种在线程函数中访问成员变量的方法:
这里定义Thread类:
class Thread
{
public:
static UINT threadMessageBoxAdapter( LPVOID lParam );
UINT threadMessageBoxProc( );
private:
CString strThreadText;
};
线程函数的实现:
UINT Thread::threadMessageBoxAdapter( LPVOID lParam )
{
CTestVectorDlg* obj = ( CTestVectorDlg* )lParam;
return obj->threadMessageBoxProc();
}
UINT Thread::threadMessageBoxProc()
{
CString strThreadText;
strThreadText.Format( _T( "%s" ), _T( "Thread adapter" ) );
AfxMessageBox( strThreadText );
return 0;
}
使用AfxBeginThread启动线程:
CWinThread* thread;
thread = AfxBeginThread( threadMessageBoxAdapter, this );
这样,当线程启动后,弹出”Thread Adapter”的信息,说明成功访问成员变量。
相关文章推荐
- MFC线程函数中访问成员变量的方法
- 线程函数中访问成员变量的方法
- 线程函数中访问成员变量的方法(转)
- 一种在线程函数里面访问类成员的方法
- C++中的线程函数如何访问类中的成员变量
- 函数访问参数受限的处理方法
- 线程间操作无效: 从不是创建控件“”的线程访问它~~~的解决方法
- 同时创建多个线程,它们都访问一个对象中的同步方法,怎么确保第一个线程最先拿到对象锁,否则,怎么保证多个线程之间的有序通信
- 如何控制某个方法允许并发访问线程的个数?
- 【Java学习笔记】Java中方法和成员变量的访问控制
- MFC 中一个界面开启的线程函数如何访问另一个界面的成员
- 懒人的方法处理: 从不是创建控件XXX的线程访问的异常
- ASP.net 在内容页中访问母版页的方法/函数
- 线程间操作无效: 从不是创建控件“...”的线程访问它(解决方法)
- C# 线程间操作无效: 从不是创建控件“”的线程访问它~~~的解决方法~
- MFC 下 线程编程的调用线程外的函数方法
- EF异常‘在创建模型,此时不可使用上下文。如果在 OnModelCreating 方法内使用上下文或如果多个线程同时访问同一上下文实例,可能引发此异常。 请注意不保证 DbContext 的实例成员’
- linux C++ 类成员函数中创建线程,且能访问类中其他成员变量
- “线程间操作无效:从不是创建控件“XX”的线程访问它”的解决方法
- 第14天 同步函数、线程的实现方式、通讯wait方法与notify