首页
社区
课程
招聘
[求助]求解,退线程和try的问题!菜鸟问题!
发表于: 2009-2-22 01:42 4119

[求助]求解,退线程和try的问题!菜鸟问题!

2009-2-22 01:42
4119
用MFCDLL,加载一个DLL,弹出一个对话框界面.

然后创建一条线程,一条死循环线程,用while死循环..
当我按叉叉关闭对话框时,如果线程不退就会出错.我是这样退的..

在MFC的框架退出对话框的函数里是这么写的.
先把while死循环设置为false,就是不让他再进while循环.
再等待线程返回1秒,超时1秒,就杀线程.

最后关线程句柄.

DlgMain::~DlgMain()
{
        DlgMain::m_TuiXianCheng = false;
        if(::WaitForSingleObject(m_Thread,1000) == WAIT_TIMEOUT)
        {
                SuspendThread(m_Thread);
                ::TerminateThread(m_Thread, 0);
        }
        ::CloseHandle(m_Thread);
}

问题是,这样有时关掉对话框的时候还是会崩溃,不知道哪里出错.调试的时候却从来不出错...
不明白退线程我这样写对不对.希望有经验的指点下有什么好的方法..

另外try:

                DWORD* add;
        try
        {
                       add=(DWORD*)0x12345678;
                       add=(DWORD*)(add+0x124);
        }
        catch(...)
        {
        }

我的目的是当访问到非法指针的时候不让进程崩溃.

上面这样写,如果访问到非法内存还是会导致崩溃的.
不明白希望也指点下,如何写才可以不使进程崩溃呢.

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 231
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qdk
2
为什么不在WM_CLOSE的处理函数里处理线程退出,而要到对象销毁的时候
2009-2-22 02:46
0
雪    币: 129
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
恩,谢谢楼上的,我改成WM_CLOSE后不会再出错了..

DlgMain::~DlgMain()
这个函数有个问题,当对话框是以赌塞模式的话,弹出对话框时不会被调用.
但是如果用线程去弹对话框,非赌塞模式,当窗口被弹出来的时候就会调用这函数.

这函数不是被销毁时才调用吗,这是不是BUG呀!
2009-2-22 10:50
0
游客
登录 | 注册 方可回帖
返回
//