я создал пользовательское делегирование обработчика и переопределить его методSelfHost DelegatingHandler
Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
сейчас в этом методе я запускать пользовательский синхронный метод, вы, ребята, дай мне знать, какой из этих примеров является правильным, или если оба не исправить, дайте мне знать лучше использовать, чтобы избежать тупиков
1.
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
if (Processor.CanProcess(request))
{
var tsc = new TaskCompletionSource<HttpResponseMessage>(cancellationToken);
tsc.SetResult(Processor.Process(request));
return tsc.Task;
}
return base.SendAsync(request, cancellationToken);
}
2.
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
if (Processor.CanProcess(request))
return Task.Run(() => Processor.Process(request), cancellationToken);
return base.SendAsync(request, cancellationToken);
}
и должен ли я использовать async для ожидания или лучше оставить его как есть.
Как часто выполняется «Processor.Process» в секунду? Если не часто, то не имеет значения, что вы делаете, и вы можете выбрать наиболее удобную форму. – usr
В худшем случае он может работать каждые 60 мс, и он может одновременно получать 16 запросов –