MFC,中怎样使用线程?C# code// 工作线程UINT CTestCallDllDlg:: MyThreadProc( LPVOID pParam ){Test1(1)
MFC,中怎样使用线程?
C# code// 工作线程UINT CTestCallDllDlg:: MyThreadProc( LPVOID pParam ){ Test1(1); return 0;}int CTestCallDllDlg:: Test1(int a){ return a+1;}
希望在点击一个按钮后, 让Test1方法,工作在一个线程, 请问应该怎样实例呢? 并且怎样个传递参数, 获取方法的返回值? 谢谢
麻烦在这个代码基础上,帮忙完善...谢谢
[解决办法]在CTestCallDllDlg类定义一个变量,用来存放结果m_iResult;
static UINT MyThreadProc( LPVOID pParam );
按钮的点击响应函数里
{
AfxBeginThread( MyThreadProc, this );
}
UINT CTestCallDllDlg:: MyThreadProc( LPVOID pParam )
{
CTestCallDllDlg * pDlg = (CTestCallDllDlg *)pParam;
m_iResult = pDlg->Test1(1);
return 0;
}
[解决办法]顶,接分
[解决办法]在按钮的click事件中
1. 调用AfxBeginThread( MyThreadProc, this ); this就是传递给线程MyThreadProc的参数。
2. 可以在dlg里定义个一个成员参数, 比如m_iParam;
MyThreadProc本来就支持UINT返回值啊, 你直接在MyThreadProc修改如下:
UINT CTestCallDllDlg:: MyThreadProc( LPVOID pParam )
{
return this->Test1(this->m_iParam);
}
[解决办法]使用CThread类即可。
[解决办法]虽然在MFC中,还是建议用_beginthreadex创建线程
[解决办法]C/C++ codeHANDLE hThread;hThread = ::CreateThread(NULL,0,MyThreadProc,(LPVOID)this,0,NULL);
[解决办法]
C/C++ codeunsigned threadID;HANDLE hThread;hThread = (HANDLE)_beginthreadex(NULL,0,&CTestCallDllDlg::MyThreadProc, NULL,0,&threadID);
[解决办法]
学习下了。
[解决办法]
你的线程函数怎么定义的
UINT __cdecl MyThreadProc(LPVOID lparam)
{
...
return 0;
}
[解决办法]
UINT CTestCallDllDlg:: MyThreadProc( LPVOID pParam )改为static UINT CTestCallDllDlg:: MyThreadProc( LPVOID pParam )
[解决办法]
线程函数必须定义成全局函数或者类的静态成员函数。。
[解决办法]
{
AfxBeginThread( MyThreadProc, this );
}
UINT CTestCallDllDlg:: MyThreadProc( LPVOID pParam )
{
CTestCallDllDlg * pDlg = (CTestCallDllDlg *)pParam;
pDlg->Test1(1);
return 0;
}
MyThreadProc( LPVOID pParam )必须定义成全局函数或者类的静态成员函数
static MyThreadProc()
[解决办法]