当前位置 博文首页 > fearlazy:频繁调用QApplication processEvents导致的异常

    fearlazy:频繁调用QApplication processEvents导致的异常

    作者:[db:作者] 时间:2021-06-17 18:14

    原文链接:https://www.fearlazy.com/index.php/post/258.html

    ?

    现象:

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

    例:

    image.png

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

    ?

    image.png

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

    ?

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

    image.png

    ?

    原因:

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

    ?

    解决办法:

    image.png

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

    下一篇:没有了