您的位置:首页 > 其它

线程函数中访问成员变量的方法

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”的信息,说明成功访问成员变量。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  thread class
相关文章推荐