我要吐血了!我的问题是不是很白痴??!!为什么没有人能回答我呢?

bangell 2002-01-22 12:37:44
请问大家:在工作者线程下启动DLL后,如何才能再截获主进程退出的消息,俺想在此时加入一些代码.
谢谢!!
...全文
123 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
bangell 2002-01-22
  • 打赏
  • 举报
回复
是不是用全局变量作为标志通知辅助线程?谢谢!
River_H 2002-01-22
  • 打赏
  • 举报
回复
两个现成如果是独立的,那只有在你的主线程推出时,通知工作线程了。
shibichen 2002-01-22
  • 打赏
  • 举报
回复
lhj 2002-01-22
  • 打赏
  • 举报
回复
这个问题其实可以比较简单解决
用全局变量;
int global_exitflag = 0;
主程序(主线程)退出
InterlockedIncrement(global_exitflag);
线程判断到global_exitflag >0 知道退出了。

而且可以扩展到判断多个线程是否都退出
每个线程退出
InterlockedIncrement(global_exitflag);

判断global_exitflag大小即可知道退出了几个线程


ygang76 2002-01-22
  • 打赏
  • 举报
回复
使用全局变量就可以了
捕鲸叉 2002-01-22
  • 打赏
  • 举报
回复
BOOL m_WorkerThreadShouldExit=FALSE;
启动线程:
CWinThread* pThread=AfxBeginThread(myThread,this);
主程序退出时:
myFlag=1;
m_WorkerThreadShouldExit=TRUE;
WaitForSingleObject(pThread->m_hTread,INFINITE);
工作线程:
UINT myThread(LPVOID lParam)
{
CMyObject* pObject=(CMyobject*)lParma;

while(TRUE)
{
.....
if(pObject->m_WorkerThreadShouldExit==TRUE)
{
domyexitProcess();
return 0;
}

}
}

hooligan 2002-01-22
  • 打赏
  • 举报
回复
你应该在主线程中将AfxGetThread()->m_hThread 作为参数传给工作线程
bangell 2002-01-22
  • 打赏
  • 举报
回复
AfxGetThread()->m_hThread 不会是当前的句柄吧?
hooligan 2002-01-22
  • 打赏
  • 举报
回复
AfxGetThread()->m_hThread
bangell 2002-01-22
  • 打赏
  • 举报
回复
WaitSingleObject参数用主线程的句柄 :是用AfxGetInstanceHandle()吗?谢谢!
bangell 2002-01-22
  • 打赏
  • 举报
回复
好像不大安全,会出现同步问题吗?如果同时对::bFlag进行操作...会发生dirty write的,难道还要用CEvent...??MFC有没有更好的解决办法?
hooligan 2002-01-22
  • 打赏
  • 举报
回复
WaitSingleObject,参数用主线程的句柄
ygd 2002-01-22
  • 打赏
  • 举报
回复
可以那样做

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧