QT 防止FTP 上传软件在断连处 Crash

2018-06-17 20:29:45来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

前段时间发现项目中的上传FTP软件有可能会在从服务器申请断连时Crash, 所以加了一个Timer。

由于项目代码行数过大, 此处上传部分代码片段。

    timeoutTimer = new QTimer();
    connect(timeoutTimer, SIGNAL(timeout()), this, SLOT(doTimeout()));
    timeoutTimer->setInterval(4000);
    case QFtp::Closing:
        // The connection is closing down, but it is not yet closed. (The state will be Unconnected when the connection is closed.)
        pMain->debug( "Status(%d) = disconnecting from HOST", type );
        timeoutTimer->start();
        break;
    case QFtp::Unconnected:
        // There is no connection to the host.
        pMain->debug( "Status(%d) = disconnected status", type );
        if ( communicator->isPerforming() ) {
            communicator->abortRequest();   // abort performing command, maybe done(ERROR) should be called later
        }
        timeoutTimer->stop(); //stop timer
        break;
/** 
 *@projectName   BoeB9Project  
 *@author        Hasan 
 **/ 
void FtpHelper::doTimeout()
{
    pMain->debug("debug154545 timeout !!!!!!!");
    pMain->sendProxyMessage("MesUPLOADTimeout", ProxyMessage::Notify);
    timeoutTimer->stop();
}

在此进程发出MesUPLOADTimeout 信息之后, 项目主进程会从代理Proxy中接受此信息并进行处理。

/**
 *@projectName   BoeB9Project
 *@author        Hasan
 **/
void BoeB9QtmCellInlineMain::restartUploader()
{
    QProcess proc;
    QString c = "taskkill /im uploader.exe /f";
    proc.execute(c);
    proc.close();

    info("********info terminate uploader");

    QProcess *proc1 = new QProcess(this);

    proc1->start("cmd.exe", QStringList() <<"/c" << "c:///ORBKwsmcu/bin/start_uploader.bat");


    delete proc1;

    info("********info start uploader again");
}

主进程重启上传软件,从而跳过断连。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:洛谷P4525 【模板】自适应辛普森法1(simpson积分)

下一篇:OJ:析构函数实现多态