Здравствуйте! Разрабатываю ПО для Windows и Linux и столкнулся с проблемой, что если в windows QFile-ом открыть удаленный файл(если доступа нет), то открывается он очень долго(секунд 15) и в конце концов возвращает false, в Linux аналогично.
Код функции примерно таков:
void function(const& QString filename, const& QString secondFilename)
{
QFile file(filename); // пример windows: filename="//192.168.0.1/folder/file.txt
// пример linux: filename="/mnt/192.168.0.1/file.txt(монтирую сразу на папку folder)
if (file.open()) { // На этом моменте и зависает...(если доступа по локалке нет)
doSomeWork();
} else {
QFile reserveFile(secondFilename); // Если файл с первым именем не открылся, пробуем открыть резервный файл(тоже лежащий удаленно). Прим: //192.168.1.1/folder/file.txt или аналогично для линуксы
if (reserveFile.open()) { // Здесь тоже есть возможность зависания
doSomeWork();
}
reserveFile.close();
}
file.close();
}
Выводил в отдельный поток при этом ожидая в основном потоке 500 мс через QThread::msleep(500);
потом убивал поток через QThread::terminate()
и делал QThread::wait()
но ожидание тоже долгое. Иногда даже дольше чем открывать файл.
Подскажите как верно реализовать отмену функции открытия файла( и не дожидаться окончания её работы ) если прошел некоторый timeout
предположим в 500 мс?