You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nmWTAI-Platform/Src/nmNum/nmCalculation/nmCalculationPebiGridTask.cpp

46 lines
1.3 KiB
C++

#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;
}
}