我有这样的代码
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上运行
答案 0 :(得分:2)
这很难说,但它可能会崩溃,因为你在删除对象时会从线索底部拉出地毯。
结束线程的好方法是首先告诉它停止。这通常使用线程函数检查的布尔标志来完成。它将让线程函数以一种很好的方式处理清理。完成后,可以使用另一个布尔标志进行检查,然后您可以自由删除该对象。