我的app使用MFC的doc/view架构,能否这样使用worker thread
在View的类中的函数中 AfxBeginThread(TestFunction, this);TestFunction是一个全局函数,开启一个thread 通过传递的this指针来得到view类
UINT TestFunction(LPVOID pParam)
{
int iFindItem = 0;
stBPData bpdata;
BOOL bRet = FALSE;
SYSTEMTIME systime;
CString LineContent; CDXXXView *pClass = (CEDoctorView *)pParam;
这样我就可以在thread中访问view类中的变量了 我总是感觉这样使用不很正常,不知道大家是怎么使用的??
在View的类中的函数中 AfxBeginThread(TestFunction, this);TestFunction是一个全局函数,开启一个thread 通过传递的this指针来得到view类
UINT TestFunction(LPVOID pParam)
{
int iFindItem = 0;
stBPData bpdata;
BOOL bRet = FALSE;
SYSTEMTIME systime;
CString LineContent; CDXXXView *pClass = (CEDoctorView *)pParam;
这样我就可以在thread中访问view类中的变量了 我总是感觉这样使用不很正常,不知道大家是怎么使用的??
改为CDXXXView *pClass = (CDXXXView *)pParam;
而且,CEDoctorView 的声明 中应该包含一个CDXXXView类型的成员m_DXXXView
UINT TestFunction(LPVOID pParam)
{
int iFindItem = 0;
stBPData bpdata;
BOOL bRet = FALSE;
SYSTEMTIME systime;
CString LineContent;
CDXXXView *pClass = (CDXXXView *)pParam;我担心的是这样使用thread 是否OK ?? 其他人怎么使用thread访问其他数据的
1.保证CDXXXView销毁后TestFunction不再访问它
2.谨慎使用AfxGetMainWnd,FromHandle等函数,它可能会返回临时对象
Up,如果传入的线程的参数是不变的,可以用一个数据类封装需要的数据,然后new一个数据类的对象,把这个指针传入线程能安全点。
我现在传入线程函数的就是当前View的一个指针,使用this来表示的 当前程序运行时 这个this指针应该永远有效并且是不便的吧? 你说的new 一个对象传入是什么意思??
关于MFC,我想还是微软更清楚一些。