我有一个 DLL,它有一个名为 CWork 的基于 CWinThread 的类。
我使用 AfxBeginThread 创建它。
在这门课中,我定义了一个无限循环并执行特定任务的过程。此过程将单独用作线程。我也使用 AfxBeginThread 创建它。
现在,当我的 DLL 退出时,我想结束线程。这是因为我在退出时发生了崩溃,我担心这就是原因。
此外,还有
伪代码示例:
类Cmain
Cmain::Cmain(){
pMyThread = AfxBeginThread(CWork - a CWinThread based Class);
}
UINT HandleNextVTSConnectionCommandProc(LPVOID pParam);
class CWork
CWork:CWork(){
AfxBeginThread(HandleNextVTSConnectionCommandProc, this);
}
UINT HandleNextVTSConnectionCommandProc(LPVOID pParam){
while(true){
dosomething();
sleep(2000);
}
}
我的问题是,结束这两个线程的正确方法是什么?
谢谢!
最佳答案
一般来说,结束线程的正确方法是要求它完成,然后等待它完成。因此,在 Windows 上,您可能会发出一个事件信号,要求线程完成,然后等待线程 HANDLE。强行终止一个线程几乎总是一个误导的想法,它会回来困扰你。