首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

立即结束线程的有关问题

2013-07-01 
立即结束线程的问题?我编写了一个基于对话框的MFC EXE,里面有两个按钮A和B,A是启动工作者线程,B是结束工作

立即结束线程的问题?
我编写了一个基于对话框的MFC EXE,里面有两个按钮A和B,A是启动工作者线程,B是结束工作者线程。

启动工作者线程代码:

CWinThread* m_pThread=AfxBeginThread(ThreadProc,NULL, THREAD_PRIORITY_ABOVE_NORMAL,0,0,NULL);


工作者线程函数代码(等待一个小时,然后做某事):
UINT ThreadProc(LPVOID pParam)
{
    sleep(1小时);
    Do Someting;
    return 0;
}


我的问题是:假设我已经启动了工作者线程十分钟,现在我点击B按钮想立即结束工作者线程,但是由于此时工作者线程已经处于sleep(1小时)之中,所以我要等很长时间工作者线程才能正常结束,有没有办法立即结束工作者线程呢(别太暴力或者直接关闭程序等等)。
[解决办法]
有个方法,用2个event A和B,初始无信号,在主线程里启动个定时器,到了1小时然后A设置为有信号。B用来退出,想退出的时候将B设置为有信号状态。然后在子线程里waitformultiobject,第三个参数传个false
[解决办法]
等待1小时好像还可以用“可等待的计时器对象”来做(这玩意儿没怎么用过,印象中好像可以这么用),这样就不用在主线程开定时器了
[解决办法]
{

       for(int I=0;I<36000;I++)
       {
            sleep(100);
            If(isOver) return 0;
        }
       Do SomeThing
}
[解决办法]
别在工作线程动态分配内存,随便 使用 exitthread terminalthread 或者让线程自己return  都可以

热点排行