首页 > 其他分享 >ConfigureAwait(false) 原理以及注意事项总结

ConfigureAwait(false) 原理以及注意事项总结

时间:2023-10-13 11:14:00浏览次数:41  
标签:false ConfigureAwait 线程 https 注意事项 Net com

解决什么问题?

1、避免线程死锁

2、可能的性能提升

存在的问题:

1、当代码在另一个线程上继续时,线程同步上下文将丢失,因为状态机改变。这里最大的损失是你会失去归属于线程的Culture和Language,其中包含了国家语言时区信息,以及来自原始线程的HttpContext.Current之类的信息。

因此,如果您不需要以此来做多语系或操作任何HttpContext类型设置,则可以安全地进行此方法的调用。注意:如果需要language/culture,可以始终在await之前存储当前相关状态值,然后在await新线程之后重新应用它。

2、项目如果是 Net Framework 以及Net stadard 平台,建议使用ConfigureAwait(false),或者是说需要兼容这两个平台的类库建议使用;如果是只使用Net Core的项目,则可以不使用,在NetCore中移除了SynchronizationContext。

参考文章:

1、https://www.cnblogs.com/xiaoxiaotank/p/13529413.html【理解C#中的ConfigureAwait】

2、https://zhuanlan.zhihu.com/p/552387337?utm_id=0【Async,Await和ConfigureAwait的关系】

3、https://zhuanlan.zhihu.com/p/376704108【ASP.NET Core为什么移除了SynchronizationContext】

标签:false,ConfigureAwait,线程,https,注意事项,Net,com
From: https://www.cnblogs.com/souphm/p/17761604.html

相关文章

  • Oracle数据库迁移注意事项
    本文基于使用数据泵(datapump)迁移数据库时,特别需要注意的几点。1.sys下别其他用户调用的package,procedure等-场景:大型数据库中,都会有自定义的表分区管理procedure2.tnsnames.ora、listener.ora、sqlnet.ora的信息-场景:有些场景可能会使用oraclewallet,因......
  • 为什么 Java 中“1000==1000”为false,而”100==100“为true?
    这是一个挺有意思的讨论话题。如果你运行下面的代码:Integera=1000,b=1000;System.out.println(a==b);//1Integerc=100,d=100;System.out.println(c==d);//2你会得到:falsetrue基本知识:我们知道,如果两个引用指向同一个对象,用表示它们......
  • json_encode return false
    json_encodereturnfalse怎么办if(!json_encode($result,JSON_PARTIAL_OUTPUT_ON_ERROR)){ var_dump(json_last_error());//打印上一次的错误代码:int(5) //所有字符串数据的编码必须是UTF-8。 //mb_convert_encoding($str,"UTF-16");//把字符串转为utf-16编码 echo......
  • BOSHIDA DC电源模块选用电容滤波器的注意事项
    BOSHIDADC电源模块选用电容滤波器的注意事项DC电源模块是电子系统中的重要部件,常用于给各种电子设备供电。为了使输出的直流电压更加稳定,需要在电源模块中加入电容滤波器。电容滤波器的作用是平滑输出的直流电压,去除其中的纹波信号,使输出电压更加稳定。然而,选用电容滤波器时需要......
  • bindingresult的注意事项
    SpringValidation验证框架对参数的验证机制提供了@Validated(Spring'sJSR-303规范,是标准JSR-303的一个变种),javax提供了@Valid(标准JSR-303规范),配合BindingResult可以直接提供参数验证结果。在检验Controller的入参是否符合规范时,使用@Validated或者@Valid在基本验证功能上没有太......
  • 从串口读取数据的注意事项
    从串口一次可以读4096个字节的数据。如果读取时间间隔很长,串口会积累大量数据,可能会超过4096个字节。如果读取时间间隔很短,那么可能产生的数据很少,甚至没有数据。因此,需要确定合适的读取时间。对于读取的数据要仔细观察结果是16进制数据还是字符串数据。注意数据产生的时间先后顺序......
  • MATLAB 快捷键/使用技巧/注意事项
    快捷键Ctrl+R注释代码Ctrl+T取消注释代码Ctrl+]或先将光标移动到行首再按Tab添加缩进Ctrl+[或先将光标移动到行首Shift+Tab删除缩进Ctrl+I<先选择需要自动整理的代码段>自动整理代码Ctrl+F<先选择需要查找替换的变量名>查找或替换变量名、函数名Ctr......
  • macOS上proxychains使用注意事项
    在使用brew安装的proxychains的时候,配置文件位于/usr/local/etc/proxychains在高版本macos上,默认启用了SIP保护,所以/usr/bin/目录下的文件无法使用proxychains解决办法:3.1关闭SIP保护首先重启Mac,按住Option键进入启动盘选择模式按⌘+R进入Recovery模式在屏幕的最......
  • 报错AttributeError: Attempted to set WANDB to False, but CfgNode is immutable
    问题 今天在跑代码的时候,使用到了wandb记录训练数据。 我在23服务器上跑的好好的,但将环境迁移到80服务器上重新开始跑时,却遇到了如下报错 看这个报错信息是由于wandb没有apis这个属性,于是我定位到具体的报错代码 ......
  • 中兴交换机配置MC-LAG生成树配置注意事项
    spantree  enable  moderstp  bridge-addressxxxx.xxxx.xxxx #TOR1,TOR2配置一样,配置为TOR1的机架mac  mstpriority8192 instance0 #存管TOR1,存管TOR2配置一样,优先级配置为8192  tc-guardenable #开启对TC类型BPDU报文的保护功能  vstpenable#开启VSTP功能 ......