fix: connect refresh discon btn bug.

This commit is contained in:
2025-06-20 14:39:03 +08:00
parent 9c012b9613
commit de443ed5b2
3 changed files with 14 additions and 5 deletions

View File

@@ -48,6 +48,13 @@ bool ClientCore::Connect(const QString& ip, quint16 port)
void ClientCore::Disconnect() void ClientCore::Disconnect()
{ {
QMutexLocker locker(&conMutex_);
if (socket_ && socket_->state() != QAbstractSocket::UnconnectedState) {
socket_->disconnectFromHost();
if (socket_->state() != QAbstractSocket::UnconnectedState) {
socket_->waitForDisconnected(1000);
}
}
connected_ = false; connected_ = false;
} }
@@ -219,9 +226,9 @@ QString ClientCore::GetOwnID()
SocketWorker::SocketWorker(ClientCore* core, QObject* parent) : QThread(parent), core_(core) SocketWorker::SocketWorker(ClientCore* core, QObject* parent) : QThread(parent), core_(core)
{ {
connect(core_, &ClientCore::sigDisconnect, this, [this]() { //connect(core_, &ClientCore::sigDisconnect, this, [this]() {
thread()->quit(); // thread()->quit();
}); //});
} }
SocketWorker::~SocketWorker() SocketWorker::~SocketWorker()

View File

@@ -47,6 +47,7 @@ void Connecter::RunWorker(ClientCore* clientCore)
}); });
connect(this, &Connecter::sigDoConnect, clientCore_, &ClientCore::DoConnect); connect(this, &Connecter::sigDoConnect, clientCore_, &ClientCore::DoConnect);
connect(this, &Connecter::sigDisConnect, clientCore_, &ClientCore::Disconnect);
connect(sockWorker_, &QThread::finished, sockWorker_, &QObject::deleteLater); connect(sockWorker_, &QThread::finished, sockWorker_, &QObject::deleteLater);
sockWorker_->start(); sockWorker_->start();
@@ -99,8 +100,8 @@ void Connecter::setState(ConnectState cs)
void Connecter::Disconnect() void Connecter::Disconnect()
{ {
sockWorker_->quit(); qWarning() << QString(tr("Disconnected requeset..."));
qWarning() << QString(tr("Disconnected...")); emit sigDisConnect();
} }
void Connecter::RefreshClient() void Connecter::RefreshClient()

View File

@@ -33,6 +33,7 @@ public:
signals: signals:
void sendConnect(ConnectState cs); void sendConnect(ConnectState cs);
void sigDoConnect(const QString& ip, quint16 port); void sigDoConnect(const QString& ip, quint16 port);
void sigDisConnect();
private: private:
void InitControl(); void InitControl();