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.
46 lines
1.3 KiB
C++
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;
|
|
}
|
|
}
|