Как решить проблему провала - PullRequest
0 голосов
/ 05 июля 2019

когда я отключаю свой сервер, приложение выдает ошибку, сообщающую о сбое

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;
   }

, поскольку эти слоты не выводятся, поток постоянно работает, и внезапно возникает ошибка подтверждения, как решить эту ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...