如何删除从CWinThread派生的对象

时间:2013-08-02 12:29:14

标签: c++ multithreading mfc

我有这样的代码

X *m = new X(); // X - class derived from CWinThread;

m->CreateThread(CRREATE_THREAD);
m->b_AutoDelete = false;
x->ResumeThread;

在函数运行中我有一些代码,它们在循环中运行。

当我尝试删除m时,我经常会遇到异常。

我需要在delete之前做一些事情,可能是m->Suspend还是其他什么?

代码在Windows 7上运行

1 个答案:

答案 0 :(得分:2)

这很难说,但它可能会崩溃,因为你在删除对象时会从线索底部拉出地毯。

结束线程的好方法是首先告诉它停止。这通常使用线程函数检查的布尔标志来完成。它将让线程函数以一种很好的方式处理清理。完成后,可以使用另一个布尔标志进行检查,然后您可以自由删除该对象。