когда я отключаю свой сервер, приложение выдает ошибку, сообщающую о сбое
ASSERT в QCoreApplication :: sendEvent: "Невозможно отправить события объектам, принадлежащим другому потоку. Текущий поток be0cf8. Receiver ''(типа' QNativeSocketEngine ') был создан в потоке cc39d4 "
Я не понимаю, в чем причина проблемы
у меня в приложении запущено три потока,
MainWindow.cpp:
void MainWindow::on_pushbutton_clicked()
{
ui->pushbutton->setDisabled(true);
thread1.m_TargetIpAddress.setAddress(IP Address);
thread1.m_iTargetPort = ui->TargetPortNumber->text().toInt();
thread1.start();
thread2.start();
}
1-й поток:
некоторые операции с сокетами, такие как отправка, получение, connecttotarget, отключение от хоста, выполняются здесь
2ndпоток:
я подключусь к серверу из второго потока.
3-й поток:
В этом я буду постоянно посылать некоторые команды и получать некоторые данные с сервера.Я использую while (var), когда когда-либо устанавливается соединение, это значение var будет обновляться до единицы, а когда сервер отключается, значение var обновляется как 0 (ноль).поток 3 будет запущен после установления соединения с сервером.
Это моя последовательность.Теперь моя проблема в том, что когда сервер отключается, я не получаю отключенный сигнал, исходящий от моего приложения.
это мой сигнал и слот
connect (& obj, & QTcpSocket :: отключено, this & & MainWindow:: TargetConnectionStatus, Qt :: UniqueConnection);
TargetConnectionStatus()
{
var = 0;
}
, поскольку эти слоты не выводятся, поток постоянно работает, и внезапно возникает ошибка подтверждения, как решить эту ошибку.