当前位置 博文首页 > fearlazy:频繁调用QApplication processEvents导致的异常
原文链接:https://www.fearlazy.com/index.php/post/258.html
?
现象:
创建一个子线程,在子线程中不断发送信号给主线程,在主线程的对应的槽函数中调用QApplication::processEvents()。
例:
CMyThread继承于QThread类,在run函数中间隔10ms发送一次信号
?
Widget在主线程中,sltDosomething槽连接sigDoSomething信号。在槽函数中只调用QApplication::processEvents()。
?
当子线程run函数休眠时间足够小时(本次为10ms)程序崩溃。使用VS调试可见错误。
?
原因:
不详,猜可能是时间足够小导致槽函数递归。
?
解决办法:
连接信号时最后一个参数选择Qt::BlockingQueuedConnection。