WepApi TaskCanceledException A任务已取消--async+await的方案替代task.Wait()可有效解决高并发问题...

在.net Core中httpClient添加配置超时时长也没用

services.AddHttpClient("PPHttpClient", config =>
            {
                config.DefaultRequestHeaders.Add("Accept", "*/*");
                config.DefaultRequestHeaders.Add("AcceptLanguage", "en-US");
                config.Timeout = TimeSpan.FromMinutes(5);
                config.DefaultRequestHeaders.Add("Accept-Encoding", "gzip, deflate");
            });

task.Wait()是一种比较老的写法,而async+await是目前主流的异步处理方案

不要使用Task a=()=>; a.Wait(); 会导致堵塞。
使用这样await a;

参考:WepApi TaskCanceledException A任务已取消。httpClient-腾讯云开发者社区-腾讯云 (tencent.com)

account = result.Content.ReadAsAsync<cuentaM>().Result;

替换为

account = await result.Content.ReadAsAsync<cuentaM>();

Task.Delay中传CancellationToken就是会抛异常,要想不抛异常用Task.WhenAny和TaskCompletionSource的组合即可。

static TaskCompletionSource<bool> tcs = new TaskCompletionSource<bool>();

    string GetB()
    {
        tcs.SetCanceled();
        return "";
    }

    async Task<string> GetString()
    {
        await Task.WhenAny(Task.Delay(3000), tcs.Task);
        return "";
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值