CancelPendingRequests
CancelPendingRequests у
HttpClient
не бросает, если висящих запросов нет.
В примерах метод вызывают без
долгого ожидания и без сети.
Синтаксис
client.CancelPendingRequests();
Пример
Давайте вызвать отмену без активных запросов:
using System;
using System.Net;
using System.Net.Http;
class Stub : HttpMessageHandler
{
protected override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request,
CancellationToken cancellationToken)
{
var response = new HttpResponseMessage(HttpStatusCode.OK);
response.Content = new StringContent("abcde");
return Task.FromResult(response);
}
}
class Program
{
static void Main()
{
using HttpClient client = new HttpClient(new Stub());
client.CancelPendingRequests();
Console.WriteLine("abcde");
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте вызвать отмену дважды подряд:
using System;
using System.Net;
using System.Net.Http;
class Stub : HttpMessageHandler
{
protected override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request,
CancellationToken cancellationToken)
{
var response = new HttpResponseMessage(HttpStatusCode.OK);
response.Content = new StringContent("abcde");
return Task.FromResult(response);
}
}
class Program
{
static void Main()
{
using HttpClient client = new HttpClient(new Stub());
client.CancelPendingRequests();
client.CancelPendingRequests();
Console.WriteLine("abcde");
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте вызвать отмену после создания клиента:
using System;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
class Stub : HttpMessageHandler
{
protected override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request,
CancellationToken cancellationToken)
{
var response = new HttpResponseMessage(HttpStatusCode.OK);
response.Content = new StringContent("abcde");
return Task.FromResult(response);
}
}
class Program
{
static async Task Main()
{
using HttpClient client = new HttpClient(new Stub());
client.CancelPendingRequests();
string res = await client.GetStringAsync(
"http://abcde.example/");
Console.WriteLine(res);
}
}
Результат выполнения кода:
"abcde"
Смотрите также
-
SendAsync,
отправка запроса -
Timeout,
предел ожидания -
Dispose,
закрытие клиента -
HttpClient,
класс клиента