Qt — Как остановить QNetworkAccessManager от получения ответа переполнения стека

Привет у меня есть QNetworkAccessManager который я использую для отправки запроса на получение данных изображения с сервера. Этот вызов асинхронный. Я делаю несколько звонков с ним. Каждый вызов выполняется путем открытия нового экземпляра QNetworkAccessManager Поэтому, когда возникает конкретное состояние, я хочу остановить QNetworkAccessManager от получения ответов от своих сетевых запросов. Есть ли способ сделать это? Благодарю.

0

Решение

Не используйте новый QNetworkAccessManager для каждого запроса, но делитесь менеджером. Обычно хорошо иметь только один. Конечно, можно иметь несколько, если дизайн приложения это предлагает — но, например, Управление несколькими из них в одном управляющем объекте обычно не требуется. Просто есть один менеджер с тем же временем жизни, что и у объекта, управляющего сетевыми запросами.

Чтобы отменить запущенные операции, сохраните указатели QNetworkReply * QNetworkAccessManager :: get / put / post, возврат и вызов прервать () когда ваше состояние возникает.
Подключиться к законченный () сигнал убрать их из бухгалтерии (иначе вы бы в итоге получили висячие указатели).

Если это становится слишком сложным, подумайте об использовании шаблона команды. В этом ответе Я описываю, почему я нахожу это особенно полезным в этом контексте.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]