есть ф-ция которая вызывается в другом потоке(объект живет там), проблема в цикле
C++ (Qt)
for (int i = 0; i < mailCount; ++i)
{
stream << QString("TOP %1 0\r\n").arg(QString::number(i + 1));
stream.flush();
// waiting for ready read
if (!waitForReading())
qDebug() << "Error";
line = sslSocket.readLine();
// waiting for ready read
if (!waitForReading())
qDebug() << "Error";
mailContent = sslSocket.readAll();
inboxMails->append(mailContent);
if (stopped)
return false;
}
ф-ция waitForReading() реализована так:
C++ (Qt)
inline bool Pop3Thread::waitForReading()
{
int i = 0;
while (i < 10)
{
if (sslSocket.waitForReadyRead(1000))
return true;
++i;
if (stopped)
return false;
}
return false;
}
дело в том что код:
C++ (Qt)
if (!waitForReading())
qDebug() << "Error";
вызывает ошибку, но если заменить на:
C++ (Qt)
if (!waitForReadyRead(10000))
qDebug() << "Error";
то работает без проблем, в чем соль, почему ф-ции waitForReading() и waitForReadyRead(10000) различаются?