如何使用C ++关闭所有子线程

时间:2012-05-14 19:34:59

标签: c++ qt

我的Windows / QT应用程序没有一直退出。

对象清理后,我试图删除QProcess对象。但它并没有清理过程,它可以在任务管理器中显示。

    delete process;
    process = 0;

我认为删除过程不起作用,因为某些线程在后台运行。我想确保所有线程都正常关闭,因此进程将退出。

请告诉我正确的方法。

2 个答案:

答案 0 :(得分:0)

任务管理器不显示您的QProcess对象,删除该对象不会影响任务管理器。如果您的流程中仍有代码正在运行,则该流程将根据操作系统继续存在。

如果确实想要退出该过程,则可以调用Win32函数ExitProcess()。只要确保你已经保存了你想要的一切。

当所有线程都停止运行时,Qt通常会退出该进程。

答案 1 :(得分:0)

一个问题可能是QProcess对象不代表子线程,它代表一个独立的进程,您可能想要使用QThread对象。

使用QThread对象,您可以使用quit,exit,wait和terminate的某种组合,具体取决于子线程的确切内容,请查看文档以了解差异。