У меня есть dll, где я хочу сделать некоторую сеть, эта DLL вызывается из приложения C# как неуправляемая DLL. Вся инициализация работает нормально, но она зависает каждый раз, когда предполагается запустить -> get(). У меня есть этот код:QNetworkAccessManager-> get freezes при вызове в DLL
.........
QUrl path(remotePath);
QNetworkRequest request(path);
currentFile.setFileName(localPath);
if(!currentFile.open(QIODevice::WriteOnly)){
doCallback("failed to open: " + localPath);
}
doCallback("before get: " + remotePath);
QNetworkReply* reply = this->manager->get(request);
doCallback("after get: " + localPath);
...........
«до получения» обратного вызова выполняется в порядке, но никогда один «после того, как получить», так что я предполагаю, что это полностью замерзает, когда менеджер пытается метод Get(). Я что-то пропустил или это просто невозможно через DLL?
Работает ли тот же код, если он не вызван из неуправляемой библиотеки DLL? т. е. написать небольшое консольное приложение на C++ и вызвать тот же код и посмотреть, что произойдет. –
Спасибо за ваш быстрый ответ. Да, я создал консольное приложение через Qt, и тогда он отлично работает ... Интересно, может ли это иметь какое-то отношение к этому, я не запускаю QApplication в моей неуправляемой DLL, но просто выполняю вызов класса ..? –
Итак, вы * не * создали собственное консольное приложение и вызывают тот же код. Если все, что вы вызываете в своем родном приложении, это опубликованный код, и у вас такая же проблема, вы знаете, в чем проблема. –