【发布时间】:2023-02-05 01:47:57
【问题描述】:
我想设计一个基类,用于通过 qobject::connect 或 invokemethod 控制线程并在线程本身中执行类的槽。
调用 start 时,我调用 this->movetothread(memthread) 和 memthread->start 将其移动到成员线程的上下文中并启动事件循环。 当调用stop时,调用qthread的quit来停止事件循环。问题是,当线程退出时,以后不可能通过 deletelater 释放“this”,因为 deletelater 需要一个正在运行的事件循环来删除对象。对象的线程上下文可能已经通过调用 quit 之前停止了。
我无法将 object->deletelater 连接到 thread::finished,因为那时对象将无法使用,而且我无法再次启动/停止线程。我在设计中的目标是实际实现这一点。能够停止线程,稍后启动,再次停止等等。
我不确定设计是否可以像 qt 那样可行,但至少想尝试一下。
附言我的第一个问题,请让我知道任何错误。
【问题讨论】:
标签: qt