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