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

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

时间:2023-12-21 13:44:07浏览次数:32  
标签:Task TaskCanceledException WepApi await task async config 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 "";
    }

 

标签:Task,TaskCanceledException,WepApi,await,task,async,config,Wait
From: https://www.cnblogs.com/hofmann/p/17918806.html

相关文章

  • Task基础-创建Task,Task传参,获取Task返回值
    Task基础-创建Task,Task传参,获取Task返回值Task基础介绍Task的创建获取Task的执行结果 补充细节1、Task基础介绍Task类是TaskProgrammingLibrary(TPL)中最核心的一个类,下面我将会像大家展示如何使用一些方法来创建不同类型的Task,取消Task,等待Task执行完成,获取Task执行......
  • A Simple Task 题解
    这道题比较简单,简述一下思路。考虑状压\(DP\)。设\(dp_{i,j}\)表示走到第\(i\)个点,之前走过的点的状态为\(j\)的环的数量。这里有一个细节,就是我们都钦定每个走过的第一点是整个状态中编号最小的点,这样不会重复计算。考虑如何进行转移。如果当前点的编号比走过的最小编......
  • ABC311G One More Grid Task 题解
    给出\(n\timesm\)的矩阵\(a\)。求权值最大子矩形的权值。一个矩形的权值定义为它里面全部数的和乘上最小值。\(n,m\leq300,0\leqa_{i,j}\leq300\)。枚举最小的数\(a_{i,j}\)。则在满足\(a_{i,j}\)是最小值时,包含\((i,j)\)的矩形一定是极大的。这些矩形不好枚举,......
  • C# 加深印象之 Task.Run和new Task的区别
    publicasyncTaskTest(){vartask=AAA();Log.Info("调用AAA");awaitTask.Delay(2000);Log.Info("等待2秒任务尚未执行完毕");awaittask;//等待任务完成Log.Info("等待AAA......
  • Time slice based task routine in C
          基于时间片的轮询任务调度实例。#include<stdint.h>#include<stdio.h>#include<WinSock2.h>#defineMAX_TASK_NUM10#defineMAX_HALF_WORD0xffff#definefalse0#definetrue1staticuint16_tg_ti......
  • Tekton TaskRun 基础
    TaskRun概述TaskRun允许您在集群上实例化和执行Task。任务指定执行容器映像的一个或多个Steps,每个容器映像执行特定的构建工作。TaskRun按照指定的顺序执行任务中的Steps,直到所有Steps执行成功或失败。TaskRun配置清单apiVersion:tekton.dev/v1#指定API版本。kind:TaskR......
  • Tekton Tasks 基础
    Tasks概述Task是一系列Step的组合,每个Step主要负责运行特定的构建或交付工具从而完成相关的一次特定事项;Task以Kubernetes集群上Pod运行。Task是名称空间级别的资源。Tasks组成Parameters:是使得Task及Pipeline资源定义出的“模板”更加具有通用性的关键要素之一Steps:具体执行的......
  • 12.7-task-如何debug
    Debug调试理论圣经错误的两个方面,1是对项目的理解错误,2就是代码逻辑错误看懂报错信息理解报错英文,不理解百度嘻嘻也可以装插件,配置debug环境,更加简洁assertassert相当于一个断点,不会执行后面条件的步骤vs在vs中,点击运行与调试,选择python当前文件也可以设置断......
  • ###聪明办法学python Task07:debug调试
    debug的调试1.调试理论的简单介绍在计算机中,我们将机器看作状态机,同时我们遵循计算机不会犯错的原则,因此,如果程序运行不对劲,好好想想是不是自己的问题2.看懂报错信息编译器的报错要看懂,看不懂用翻译调试方法1.print调试:将程序分段后添加print,锁定问题发生地2.assert调试:表......
  • Tekton TaskRun 基础
    TaskRun概述TaskRun允许您在集群上实例化和执行Task。任务指定执行容器映像的一个或多个Steps,每个容器映像执行特定的构建工作。TaskRun按照指定的顺序执行任务中的Steps,直到所有Steps执行成功或失败。TaskRun配置清单apiVersion:tekton.dev/v1#指定API版本。kind:T......