发生了快速异常检测失败,将不会调用异常处理程序

最近调试一个项目,发现任务在多线程执行时,每次退出程序会出现标题中的错误,出错代码如下:

    //线程池
    PoolManager* manager = new PoolManager(folder_path, max_thread.toInt(), startPage, endPage);
    manager->moveToThread(&worker_thread_);
    connect(manager, &PoolManager::new_progress, this, &KonachanCollecter::update_progress);
    worker_thread_.start();
    manager->add_new_task("https://konachan.com/post?tags=" + tags);

出错信息:

发生了快速异常检测失败,将不会调用异常处理程序!

而不使用多线程时,程序正常退出,比如注释掉下面两行!

    //线程池
    PoolManager* manager = new PoolManager(folder_path, max_thread.toInt(), startPage, endPage);
    //manager->moveToThread(&worker_thread_);
    connect(manager, &PoolManager::new_progress, this, &KonachanCollecter::update_progress);
    //worker_thread_.start();
    manager->add_new_task("https://konachan.com/post?tags=" + tags);

结合出错的位置,我猜想是线程没有正常退出造成的,于是在析构函数中加入了如下代码:

//author:autumoon
//联系QQ:4589968
//日期:2021-04-23
    //加上这句话,避免线程异常退出
    if (worker_thread_.isRunning())
    {
        worker_thread_.quit();
        worker_thread_.wait();
    }

问题得到解决!

网上搜索发现出现此错误提示的原因很多,比如变量未初始化也可能造成此问题,所以需要通过注释代码的方式,逐步找到问题的所在。

你可能感兴趣的:(c++,QT,多线程,c++,qt)