修复软件关闭时崩溃问题

pull/13/head
caoyuhui 6 months ago
parent 805072f882
commit 475b9a0c01

@ -243,49 +243,23 @@ void deviceStateDlg::startNetDetn() {
m_workerThread[i]->start(); m_workerThread[i]->start();
connect(m_networkDetection[i], SIGNAL(resultReady(int,QString,QString)), this, connect(m_networkDetection[i], SIGNAL(resultReady(int,QString,QString)), this,
SLOT(receiveResult(int,QString,QString))); // 接收线程运行结果 SLOT(receiveResult(int,QString,QString))); // 接收线程运行结果
connect(this, &deviceStateDlg::stopThread, m_networkDetection[i],
&networkDetection::stop); // 结束线程
connect(this, &deviceStateDlg::startThread, m_networkDetection[i], connect(this, &deviceStateDlg::startThread, m_networkDetection[i],
&networkDetection::dowork); // 开始线程 &networkDetection::dowork); // 开始线程
connect(this, &deviceStateDlg::stopMyThread, m_networkDetection[i],
&networkDetection::stopwork); // 结束线程
emit startThread(i, cmdlist[i]); // 启用线程信号 emit startThread(i, cmdlist[i]); // 启用线程信号
// switch (i) { qDebug("网络监测线程启动线程id:%d",i);
// case 0:
// connect(this, &deviceStateDlg::startThread0, m_networkDetection[i],
// &networkDetection::dowork); // 光电吊舱 线程开始处理数据
// emit startThread0(i, cmdlist[i]); // 启用线程信号
// break;
// case 1:
// connect(this, &deviceStateDlg::startThread1, m_networkDetection[i],
// &networkDetection::dowork); // L链路 线程开始处理数据
// emit startThread1(i, cmdlist[i]); // 启用线程信号
// break;
// case 2:
// connect(this, &deviceStateDlg::startThread2, m_networkDetection[i],
// &networkDetection::dowork); // 自组网 线程开始处理数据
// emit startThread2(i, cmdlist[i]); // 启用线程信号
// break;
// case 3:
// connect(this, &deviceStateDlg::startThread3, m_networkDetection[i],
// &networkDetection::dowork); // ku卫通 线程开始处理数据
// emit startThread3(i, cmdlist[i]); // 启用线程信号
// break;
// case 4:
// connect(this, &deviceStateDlg::startThread4, m_networkDetection[i],
// &networkDetection::dowork); // 线程开始处理数据
// emit startThread4(i, cmdlist[i]); // 启用线程信号
// break;
// default:
// break;
// }
} }
} }
// 停止网络监测 // 停止网络监测
void deviceStateDlg::stopNetDetn() { void deviceStateDlg::stopNetDetn() {
for (int i = 0; i < deviceNum; ++i) { for (int i = 0; i < deviceNum; ++i) {
m_networkDetection[i]->stop(i); // 线程退出循环 m_networkDetection[i]->stopwork(i);
//emit stopMyThread(i);//信号不起作用
m_workerThread[i]->quit(); // 退出线程请求 m_workerThread[i]->quit(); // 退出线程请求
m_workerThread[i]->wait(); // 使线程正常退出。 m_workerThread[i]->wait(); // 使线程正常退出。
qDebug("网络监测线程结束线程id:%d",i);
m_workerThread[i]->deleteLater(); m_workerThread[i]->deleteLater();
m_workerThread[i] = nullptr; m_workerThread[i] = nullptr;
m_networkDetection[i]->deleteLater(); m_networkDetection[i]->deleteLater();

@ -24,11 +24,9 @@ signals:
void switchToDevicePage(int id); // 发送切换到设备页信号 void switchToDevicePage(int id); // 发送切换到设备页信号
// QVector<void (*)(int, QStringList)> startThread(int, QStringList); // QVector<void (*)(int, QStringList)> startThread(int, QStringList);
void startThread(int, QStringList); // 启动线程 void startThread(int, QStringList); // 启动线程
void startThread1(int, QStringList); // 启动线程 signals:
void startThread2(int, QStringList); // 启动线程 void stopMyThread(int); // 结束线程
void startThread3(int, QStringList); // 启动线程
void startThread4(int, QStringList); // 启动线程
void stopThread(int); // 结束线程
private slots: private slots:
void on_pushButton_homePage_GDDC_clicked(); void on_pushButton_homePage_GDDC_clicked();

@ -50,6 +50,8 @@ void HomePageDlg::initButton() {
settingWidget->close(); settingWidget->close();
else else
settingWidget->show(); settingWidget->show();
emit m_deviceStateDlg->stopMyThread(1);
}); });
// 设置页面设置ip后更新网络检测页面ip // 设置页面设置ip后更新网络检测页面ip

@ -6,13 +6,6 @@ networkDetection::networkDetection(QObject *parent,int id) : QObject(parent),m_i
CmdListChanged = false; CmdListChanged = false;
m_process = new QProcess(this); m_process = new QProcess(this);
} }
// networkDetection::networkDetection(int id)
// {
// flagRun = true;
// CmdListChanged = false;
// m_process = new QProcess(this);
// m_id = id;
// }
networkDetection::~networkDetection() { delete m_process; } networkDetection::~networkDetection() { delete m_process; }
void networkDetection::dowork(int id, QStringList cmdlist) { void networkDetection::dowork(int id, QStringList cmdlist) {
@ -47,11 +40,11 @@ void networkDetection::dowork(int id, QStringList cmdlist) {
emit resultReady(m_id, "离线","通信异常"); emit resultReady(m_id, "离线","通信异常");
} }
QThread::sleep(2); // 加sleep降低CPU占用率 //QThread::sleep(0.001); // 加sleep降低CPU占用率
} }
} }
void networkDetection::stop(int id) { void networkDetection::stopwork(int id) {
if(id == m_id){ if(id == m_id){
flagRun = false; flagRun = false;
} }

@ -16,7 +16,7 @@ public:
public slots: public slots:
void dowork(int, QStringList); void dowork(int, QStringList);
void stop(int); void stopwork(int);
signals: signals:
void resultReady(int, QString, QString); void resultReady(int, QString, QString);

@ -40,7 +40,7 @@ MainWindow::~MainWindow() {
delete m_SDFPDlg; delete m_SDFPDlg;
delete m_GDDCdlg; delete m_GDDCdlg;
delete m_HomePagedlg; delete m_HomePagedlg;
delete processPDT; //delete processPDT;
// delete mWeb; // delete mWeb;
delete lLinkWeb; delete lLinkWeb;
delete adHocNetworkWeb; delete adHocNetworkWeb;

Loading…
Cancel
Save