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個請求 –