1
我已创建自定义的委托处理程序,并重写它的方法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);
}
我应该使用异步等待还是最好离开它。
Processor.Process每秒运行多少次?如果不经常,那么无论你做什么,你都可以选择最方便的形式。 – usr
在最坏的情况下它可以每60毫秒运行一次,它可以同时接收16个请求 –