频繁调用QApplication processEvents导致的异常

现象:

创建一个子线程,在子线程中不断发送信号给主线程,在主线程的对应的槽函数中调用QApplication::processEvents()。

例:

image.png

CMyThread继承于QThread类,在run函数中间隔10ms发送一次信号


image.png

Widget在主线程中,sltDosomething槽连接sigDoSomething信号。在槽函数中只调用QApplication::processEvents()。


当子线程run函数休眠时间足够小时(本次为10ms)程序崩溃。使用VS调试可见错误。

image.png


原因:

不详,猜可能是时间足够小导致槽函数递归。


解决办法:

image.png

连接信号时最后一个参数选择Qt::BlockingQueuedConnection。

演示站
上一篇:利用__func__等宏帮助定位问题
下一篇:Qt中的forever是什么?

发表评论