擅长:python、mysql、java
在C++中我不得不面对同样的问题,但问题是一样的。在</p>
<p>问题是,当关联的线程仍在运行时,QThread实例被删除。这可能非常危险,因为线程代码的执行被中断,而不能保证线程已准备好被删除。在</p>
<p>例如:</p>
<ul>
<li>线程控制对象(工作线程)的执行和生存时间</li>
<li>在这个对象析构函数中释放了一个resource(显式或隐式,就像使用QObject父/子系统时一样)</li>
<li>由于线程执行被中断,因此不会删除该对象</li>
</ul>
<p>它会导致内存泄漏和资源泄漏。在</p>
<p>在代码中,工作线程停止,但工作线程不停止。我不是python专家,但您的worker对象似乎已停止但没有删除。在</p>
<p>要正确停止工作线程,您应该:</p>
<ul>
<li>给你的员工发个信息告诉他“停止工作”</li>
<li>请求线程退出:它将向线程发送一条“退出”消息,该消息将在工作线程执行后被处理</li>
<li>等待你的线程停止</li>
</ul>
<p>最后一步是可选的:如果线程和工作线程没有与其他对象共享资源,您可能不需要等待它们完成,只需忘掉它们。在</p>
<p>唯一的执行方法是在退出应用程序之前应该正确停止所有线程:在应用程序退出之前,您应该等待所有当前正在运行的线程停止。在</p>
<p>对于简单的任务,您还应该考虑使用QtConcurrent框架。在</p>