如何解决断言失败

时间:2019-07-05 05:37:31

标签: qt

当我断开服务器连接时,应用程序抛出错误提示

  

QCoreApplication :: sendEvent中的ASSERT失败:“无法将事件发送到   不同线程拥有的对象。当前线程为be0cf8。接收者   ”(类型为'QNativeSocketEngine')是在线程cc39d4中创建的”

我不明白导致问题的原因

我的应用程序中正在运行三个线程,

MainWindow.cpp:

$net = new-object -ComObject WScript.Network
$net.MapNetworkDrive("P:", "\\192.168.1.2\Temp\BP", $False, "008", "25")

if(Test-Path -Path "P:"){
  Write-Host "Connected"
}
else
{
  Write-Host "Try Again"
  $net = new-object -ComObject WScript.Network
  $net.MapNetworkDrive("P:", "\\$Get_IP\Temp\BP", $False, "$008", "$25")
}

$Next = "Do Next Process"

第一个线程:

一些套接字操作,例如send,receive,connecttotarget,与主机断开连接都在这里完成

第二个线程:

我将从第二个线程连接到服务器。

第三线程:

在这种情况下,我将连续发送一些命令并从服务器接收一些数据。 我正在使用while(var),一旦建立连接,此var值将更新为1,而当服务器断开连接时var值将更新为0(zero)。与服务器建立连接后,线程3将启动。

这些是我的顺序。现在我的问题是服务器断开连接时,我没有收到应用程序发出的断开连接信号。

这是我的信号和插槽

connect(&obj,&QTcpSocket :: disconnected,this,&MainWindow :: TargetConnectionStatus,Qt :: UniqueConnection);

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

由于未发出此插槽,因此线程正在连续运行,并且突然发生断言失败,该如何解决此错误。

0 个答案:

没有答案