#include "nmCalculationPebiGridTask.h" #include "nmCalculationPebiGrid.h" #include "nmDataAnalyzeManager.h" nmCalculationPebiGridTask::nmCalculationPebiGridTask( nmDataAnalyzeManager* pDataManager, QObject *parent) : QThread(parent), m_pDataManager(pDataManager), m_bManagerUseActive(false) { if(m_pDataManager != nullptr) { m_pDataManager->beginBackgroundUse(); m_bManagerUseActive = true; } } nmCalculationPebiGridTask::~nmCalculationPebiGridTask() { if(isRunning()) { wait(); } releaseDataManagerUse(); } void nmCalculationPebiGridTask::run() { // 当前网格生成链路只保留PEBI. // 生成网格. bool success = nmCalculationPebiGrid::getInstance()->meshGenPebi( m_pDataManager); // 完成通知可能引起成果窗口销毁,发信号前先解除 DataManager 使用权。 releaseDataManagerUse(); // 无论成功或失败都通知窗口,使其可以结束本轮任务状态并处理后续待刷新请求。 emit pebiGridGenerated(success); } void nmCalculationPebiGridTask::releaseDataManagerUse() { if(m_bManagerUseActive && m_pDataManager != nullptr) { m_pDataManager->endBackgroundUse(); m_bManagerUseActive = false; } }