MFC用AfxBeginThread创建的线程,如何获取线程函数返回值.
MFC用AfxBeginThread()创建线程不是通过一个函数的吗,那个函数有返回值,但我不知道如何获取他.UINTMyThread(LPVOIDlpParam){re...
MFC用AfxBeginThread()创建线程不是通过一个函数的吗,那个函数有返回值,但我不知道如何获取他.
UINT MyThread(LPVOID lpParam)
{
return function();;//这个函数有个返回值 如何获取
}
int main()
{
CWinThead m_thread;
m_thread = AfxBeginThread(MyThread,null);
return 0;
} 展开
UINT MyThread(LPVOID lpParam)
{
return function();;//这个函数有个返回值 如何获取
}
int main()
{
CWinThead m_thread;
m_thread = AfxBeginThread(MyThread,null);
return 0;
} 展开
4个回答
展开全部
#include <Windows.h>
#include <iostream>
#include <stdio.h>
using namespace std;
DWORD WINAPI ThreadPro(LPVOID lpParamter);
BOOL bRunning = TRUE;
int main()
{
HANDLE hThread = CreateThread(NULL,0,ThreadPro,0,0,NULL);
DWORD dwExitCode;
GetExitCodeThread(hThread,&dwExitCode);
printf("0x%08X\n",dwExitCode);
system("pause");
bRunning = FALSE;
system("pause");
GetExitCodeThread(hThread,&dwExitCode);
printf("0x%08X\n",dwExitCode);
system("pause");
CloseHandle(hThread);
return 0;
}
DWORD WINAPI ThreadPro(LPVOID lpParamter)
{
while(bRunning)
{
Sleep(1000);
}
return 4L;
}
这个代码给你参考,线程的创建和销毁过程还是很复杂的,想要深入一点了解的话,再问我吧!
#include <iostream>
#include <stdio.h>
using namespace std;
DWORD WINAPI ThreadPro(LPVOID lpParamter);
BOOL bRunning = TRUE;
int main()
{
HANDLE hThread = CreateThread(NULL,0,ThreadPro,0,0,NULL);
DWORD dwExitCode;
GetExitCodeThread(hThread,&dwExitCode);
printf("0x%08X\n",dwExitCode);
system("pause");
bRunning = FALSE;
system("pause");
GetExitCodeThread(hThread,&dwExitCode);
printf("0x%08X\n",dwExitCode);
system("pause");
CloseHandle(hThread);
return 0;
}
DWORD WINAPI ThreadPro(LPVOID lpParamter)
{
while(bRunning)
{
Sleep(1000);
}
return 4L;
}
这个代码给你参考,线程的创建和销毁过程还是很复杂的,想要深入一点了解的话,再问我吧!
展开全部
查询MFC,SuspendThread()
CSDN上谈到
“直接SuspendThread函数不能保证在何处挂起,可能有线程未退出临界区导致死锁,不太安全。
创建一个Event,需要挂起线程时,WaitForSingleObject等待,继续的时候,SetEvent ”
这个方法更安全。
CSDN上谈到
“直接SuspendThread函数不能保证在何处挂起,可能有线程未退出临界区导致死锁,不太安全。
创建一个Event,需要挂起线程时,WaitForSingleObject等待,继续的时候,SetEvent ”
这个方法更安全。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建一个全局变量保存返回值就行了,比如返回值为整型:
int nRtn;
UINT MyThread(LPVOID lpParam)
{
nRtn = function();
return nRtn;
}
int main()
{
AfxBeginThread(MyThread,null);
Sleep(nTime);//等待线程运行结束后对nRtn操作
...
}
int nRtn;
UINT MyThread(LPVOID lpParam)
{
nRtn = function();
return nRtn;
}
int main()
{
AfxBeginThread(MyThread,null);
Sleep(nTime);//等待线程运行结束后对nRtn操作
...
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
反回是一个CWinTheadd类的指针 。。。你可以保留这个指针。。用来对线程进行操作。。如挂起。。启动。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询