我有一个 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。强行终止一个线程几乎总是一个误导的想法,它会回来困扰你。

10-07 16:48