Привет у меня есть QNetworkAccessManager
который я использую для отправки запроса на получение данных изображения с сервера. Этот вызов асинхронный. Я делаю несколько звонков с ним. Каждый вызов выполняется путем открытия нового экземпляра QNetworkAccessManager
Поэтому, когда возникает конкретное состояние, я хочу остановить QNetworkAccessManager
от получения ответов от своих сетевых запросов. Есть ли способ сделать это? Благодарю.
Не используйте новый QNetworkAccessManager для каждого запроса, но делитесь менеджером. Обычно хорошо иметь только один. Конечно, можно иметь несколько, если дизайн приложения это предлагает — но, например, Управление несколькими из них в одном управляющем объекте обычно не требуется. Просто есть один менеджер с тем же временем жизни, что и у объекта, управляющего сетевыми запросами.
Чтобы отменить запущенные операции, сохраните указатели QNetworkReply * QNetworkAccessManager :: get / put / post, возврат и вызов прервать () когда ваше состояние возникает.
Подключиться к законченный () сигнал убрать их из бухгалтерии (иначе вы бы в итоге получили висячие указатели).
Если это становится слишком сложным, подумайте об использовании шаблона команды. В этом ответе Я описываю, почему я нахожу это особенно полезным в этом контексте.
Других решений пока нет …