WebClient: как отменить длительный HTTP-запрос? - PullRequest
1 голос
/ 09 октября 2011

Я использую WebClient, чтобы сделать запрос к API, который имеет очень длительный процесс. Но на самом деле мне не нужно знать результат, мне нужно только запустить процесс.

Для меня не имеет значения, успешен процесс или нет. Поэтому я хочу сбросить соединение, как только сделаю запрос.

Как я могу сбросить соединение веб-клиента? Я не хочу ждать ответа от 30 до 60 секунд:

var client = new WebClient();
string url = "http://example.com/SomeVeryLongRunningProcess/parameter";
client.BeginDownloadString(uri);
client.DropConnection; // how do I drop the connection before the response is received?

Ответы [ 3 ]

2 голосов
/ 09 октября 2011

CancelAsync() должны добиться цели.

2 голосов
/ 09 октября 2011

Вы можете использовать: client.CancelAsync()

0 голосов
/ 25 октября 2013

Я предлагаю вам вместо этого использовать DownloadProgressChanged событие => вы будете уверены, что сервер получил ваш запрос и начал его обрабатывать.

Предупреждение: вам также необходимо обновить код сервераначать возвращать информацию (заголовки HTTP или какой-либо текст), как только он начнет процесс, если это не так.Если нет, DownloadProgressChanged начнет получать информацию только после завершения процесса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...