读书人

程序退出时怎么结束其它正在工作的线

发布时间: 2012-02-21 16:26:23 作者: rapoo

程序退出时,如何结束其它正在工作的线程 - C++ Builder / Windows SDK/API
程序中有一处TForm,其中运行着一个线程进行其它工作。如果线程正在工作时退出时,对TForm窗体进行delete 操作时报错,后来加了结束线程的代码,但是虽然执行了线程结束函数,但是线程并没有真正返回或者结束。delete的时候还是出错。
都说要用WaitForSingleObject等事件返回WAIT_OBJECT_0的表示有信号,意思就是确认线程已经退出。结果就是一直没有返回WAIT_OBJECT_0的值。是不是那里写错了,还是思路有问题,下面是代码

C/C++ code
    try    {        if(TrendChooseForm != NULL)        {            if(TrendChooseForm->threndRun)            {                DWORD threadCode;                GetExitCodeThread(TrendChooseForm->ThreadHandle,&threadCode);                TerminateThread(TrendChooseForm->ThreadHandle,threadCode);                CloseHandle(TrendChooseForm->ThreadHandle);    //            while(true)    //            {//这里是死循环    //                if(WAIT_OBJECT_0 == WaitForSingleObject(TrendChooseForm->ThreadHandle,INFINITE))    //                break;    //            }            }            delete TrendChooseForm;            TrendChooseForm = NULL;        }    }catch(...)    {    }


[解决办法]
PostThreadMessage

读书人网 >C++ Builder

热点推荐