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/Include/nmNum/nmCalculation/nmCalculationPebiGridTask.h

45 lines
1.7 KiB
C++

#ifndef NMCALCULATIONPEBIGRIDTASK_H
#define NMCALCULATIONPEBIGRIDTASK_H
#include <QThread>
#include "nmCalculation_global.h"
#include "nmCalculationPebiGrid.h"
class nmDataAnalyzeManager;
class NMCALCULATION_EXPORT nmCalculationPebiGridTask : public QThread
{
Q_OBJECT
public:
/** @brief 创建绑定到指定分析窗口的后台网格生成任务。 */
explicit nmCalculationPebiGridTask(nmDataAnalyzeManager* pDataManager,
QObject *parent = 0);
/** @brief 等待线程结束,并释放 DataManager 后台使用权。 */
~nmCalculationPebiGridTask();
/** @brief 在主线程按版本提交后台局部结果;过期结果返回 false。 */
bool commitResult(nmDataAnalyzeManager* pDataManager);
signals:
/** @brief 无论成功或失败均通知主线程结束本轮网格任务。 */
void pebiGridGenerated(bool success);
protected:
/** @brief 线程入口:为捕获的数据管理器后台生成 PEBI 网格。 */
void run() override;
private:
/** @brief 成对释放构造时登记的 DataManager 后台使用权。 */
void releaseDataManagerUse();
/** @brief 启动任务时捕获所属数据管理器,线程内不再读取全局当前窗口。 */
nmDataAnalyzeManager* m_pDataManager;
bool m_bManagerUseActive; ///< 是否仍持有 DataManager 后台使用权。
bool m_bSnapshotValid; ///< 构造阶段是否成功获得完整输入快照。
nmPebiGridInputSnapshot m_oInputSnapshot; ///< 主线程创建、后台只读的值快照。
nmPebiGridResult m_oResult; ///< 后台局部结果,只允许主线程提交。
};
#endif // NMCALCULATIONPEBIGRIDTASK_H