谁帮忙解决一下MFC 中的多线程问题吖

写了一个程序,有个死循环,但是不知道这个怎么去解决啊,本人学了MFC 没多久,不知道这个多线程怎么弄,自己模仿别人写了一个在头文件中定义了一个
static UINT Fun1Proc(LPVOID pParam)
{
return 1 ;
}这样一个函数
在 CPP构造函数中构造了 pThread1=AfxBeginThread((AFX_THREADPROC)Fun1Proc,NULL);,但是我想单击开始键时这个死循环运行了,单击结束键时候,它又可以停止,这个应该怎么写呢???

需求不是很清楚,凭猜测提个建议吧
1. 创建线程时用CREATE_SUSPENDED参数,使线程处于挂起状态
例:
pThread1 = AfxBeginThread(&Fun1Proc, NULL, THREAD_PRIORITY_BELOW_NORMAL, 0, CREATE_SUSPENDED);

2. 想让线程跑时调用 pThread1->ResumeThread();
3. 想让线程暂停时调用:pThread1->SuspendThread();
4. 你线程中是个死循环,要想结束它可以用一个信号量或全局变量也成,在外部就可结束它。
例:
int g_bStop = 0;
static UINT Fun1Proc(LPVOID pParam)
{
while(!g_bStop)
{
// .......
}
return 1 ;
}

另:处理多线程要考虑的东西很多,建议找一些现成的程序研究一下。追问

就是运行了创建了一个线程之后,他运行我的那个死循环,循环的变量时类中的局部变量,

我就想让那个局部变量在子线程中运行,当我通过点击某个按钮时候,通过主线程,发送信息让那个子线程结束

追答

你是想在线程函数中访问类的成员是吧, 那需要把类的指针通过参数传给线程函数, 就是AfxBeginThread第二个参数, 然后通过指针访问类成员。

追问

还是不大明白,pThread1=AfxBeginThread((AFX_THREADPROC)Fun1Proc,this);你说的是这样写吧,但是当我不知道怎么在Fun1Proc 中去获得那个局部变量,你可以详细的给我说说吗》??

追答

UINT Fun1Proc(LPVOID pParam)
{
CMyClass *pObj = (CMyClass *)pParam;// 得到实例的指针,也就是AfxBeginThread传入的第二个参数。
while(!pObj->m_bStop)
{
// .......
}
return 1 ;
}

温馨提示:答案为网友推荐,仅供参考
相似回答