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

How to close all child threads using C++

本文关键字:线程 何使用 C++      更新时间:2023-10-16

我的 windows/QT 应用程序没有始终如一地退出。

对象

清理后,我正在尝试删除 QProcess 对象。但它不是清理过程,它可以显示在任务管理器中。

    delete process;
    process = 0;

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

请让我知道正确的方法。

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

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

Qt通常会在所有线程停止运行时退出进程。

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

使用 QThread 对象,您可以使用退出、退出、等待和终止的某种组合,具体取决于子线程的确切内容,请查看文档以了解差异。