connect (pFtp,SIGNAL(commandFinished(int,bool)),this,SLOT(slotFtpCmdFinished(int,bool)));
switch (_id) {
case 0: slotLogin(); break;
case 1: slotPut(); break;
case 2: slotGet(); break;
case 3: slotStateChanged((*reinterpret_cast< int(*)>(_a[1]))); break;
case 4: slotDone((*reinterpret_cast< bool(*)>(_a[1]))); break;
case 5: slotFtpCmdFinished((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< bool(*)>(_a[2]))); break;
default: ;
void FtpClient::slotFtpCmdFinished (int id, bool error)
{
if (m_idFtpOp == id) // 如果返回的id是当前正在操作的命令
{
if (error)
m_bFtpOpError=true;
else
m_bFtpOpError=false;
m_SemOp.release(); // 释放信号(使downloadFtpFile函数中m_SemOp.tryAcquire()返回true)
}
}