NET问答: using 和 await using 有什么不同?

咨询区

  • Justin Lessard

我注意到在某些情况下,visual studio 经常推荐我这么做。


await using var disposable = new Disposable();
// Do something

来替代下面的这种写法


using var disposable = new Disposable();
// Do something

请问 usingawait using 到底有什么不同 ?或者说在使用上该怎么抉择?

回答区

  • Community

  1. 典型的同步 using

通常能调用 Dispose() 方法是因为这个对象实现了 IDisposable 接口,比如下面这样。


using var disposable = new Disposable();
// Do Something...

大家应该都知道,它等价于


IDisposable disposable = new Disposable();
try
{// Do Something...
}
finally
{disposable.Dispose();
}
  1. 新的异步using

之所以能使用 await 是因为一个对象使用了 IAsyncDisposable 接口并实现了 DisposeAsync() 方法,比如下面这样。


await using var disposable = new AsyncDisposable();
// Do Something...

它等价于


IAsyncDisposable disposable = new AsyncDisposable();
try
{// Do Something...
}
finally
{await disposable.DisposeAsync();
}

这个 IAsyncDisposable 接口是在 .NET Core 3.0.NET Standard 2.1 中加入的,接口签名如下:

//// Summary://     Provides a mechanism for releasing unmanaged resources asynchronously.public interface IAsyncDisposable{//// Summary://     Performs application-defined tasks associated with freeing, releasing, or resetting//     unmanaged resources asynchronously.//// Returns://     A task that represents the asynchronous dispose operation.ValueTask DisposeAsync();}

点评区

Dispose能够异步化是一个非常好的功能,毕竟它的作用就是用来释放非托管资源,也能看到以后的大趋势就是代码异步化,函数化????????????

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/301122.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人造流星这种生日礼物,你有过吗?现在国外有了

全世界只有3.14 % 的人关注了数据与算法之美数据汪列举了不同“级别”的富豪是如何庆生的,大家看看自己处于什么水平。三流土豪的孩子过生日,看的是蜡烛...二流土豪的孩子过生日,看的是烟花...那么一流土豪的孩子看的又是什么呢?现…

Concurrent connection limit

这几天在做IIS 6上Web Service (WSE 2.0)的性能测试。在这个过程中陆续发现和解决了一些问题。 其中有一个问题比较有意思。我和项目组的同事发现,不论我们用C#写的模拟客户端用多少并发量来连接Web Service,服务器端监测到的并发连接数(性能…

Material Master

02-03 03: 物料主的定义:相同的物料应该是同一个物料号。 在PP放面我们主要关心的是工厂 。 定义公司后在公司下面在定义工厂。 spro配置的时候我们可以在、后勤、物料管理、物料、创建; 后勤、生产、物料、创建 两种方式都可以进入物料创建…

java密码学原型算法_java密码学原型算法实现——双线性对.pdf

java密码学原型算法实现——双线性对Java 密码学原型算法实现——双线性对1、背景介绍如何使用jPBC 库进行双线性群初始化,包括:(1)质数阶双线性群(Prime-Order Bilinear Groups);(2)合数阶双线性群(Composite-Order Bilinear Groups)&#x…

用啥Selenium?! .NET程序员就用自家的Playwright for .NET

提到用于Web应用程序自动化测试的工具,大家肯定第一个想到的就是Selenium。可以说,Selenium已经成为以编程方式自动化浏览器的事实标准。但是,Selenium作为老牌工具,也存在一些缺点,比如不支持Shadow DOM ,…

每日一笑 | 一些关于集合的知识

全世界只有3.14 % 的人关注了数据与算法之美(图源网络,侵权删)

Digest

一场倾盆大雨。站立着面对这场大雨吧!让它的钢铁般的光芒刺穿你。你在那想把你冲走的雨水中飘浮,但你还是要坚持,昂首屹立,等待那即将来临的无穷无尽的阳光的照耀。 转载于:https://www.cnblogs.com/bcpl/archive/2005/05/18/1578…

iOS之NSString

做了不少时间的iOS开发了,现在在阅读官方文档,特意整理出来,没任何技术含量,纯粹是笔记形式,希望对自己对大家有些帮助。 首先,要理解NSString需要学习下字符编码(ASCii,Unicode&…

java调用js查询mongo_mongodb操作之使用javaScript实现多表关联查询

一、数据控制mongodb操作数据量控制,千万控制好,不要因为操作的数据量过多而导致失败。演示一下发生此类错误的错误提示:二、多表关联查询实现/*声明变量bridge,用来记录两个集合所连接的桥梁。相当于sql语句中的Join on语句,on后…

ABP Framework 研习社经验总结(6.28-7.2)

ABP Framework 研习社经验总结(6.28-7.2)研习社初衷在翻译 《实现领域驱动设计》—— 基于 ABP Framework 实现领域驱动设计实用指南 时,因为DDD理论和实践的宽泛性,不同公司、不同行业、不同项目实现程度不同,觉得有必…

2005.5.21

早上: 4:00电话打来,叫我们去。 我们5:30才起床。 我没有意识到婆婆去世了。上午: 送婆婆到火葬场的车排起了长龙。 一路上,放炮仗,撒纸钱,撒纸元宝。到了火葬场&…

一篇万字长文读懂微软PDB、SourceLink——.net core之nuget 包调试

序言在大前年,为了说服框架组采用Nuget包的形式分发框架类库,我费了老鼻子的劲也没有取得成功,其中最致命的一个问题是,nuget包不能获得源码调试级的支持,在分发和包的管理形式上其比其他方案都优秀。最后折中的选择是…

IIC及OLED实验

I2C (Inter-Integrated Circuit): I2C 是一种用于在芯片之间进行短距离数字通信的串行通信协议。它允许多个设备通过两根导线(一根数据线 SDA 和一根时钟线 SCL)进行通信。I2C 常常用于嵌入式系统中连接传感器、存储器、显示屏和其他外设。 数据线和时钟…

放弃winform的窗体吧,改用html作界面,桌面应用程序UI的新的开发方式。

做过很多winform项目,都为winform控件头疼不已。想实现一些漂亮的样子总是很难。我这里列举几个缺点: 1.winform控件大多是 绝对布局 ,你需要给出准确的坐标。那么在实现居中效果就会很难。 2.学习成本,也了解各个控件的结构&…

数学建模必备算法模型,全新升级!

转眼间2019年已经过去了四分之一,近日,2019年数学建模国赛的时间也已经出来啦,确定为9月12日(周四)18时至9月15日(周日)20时。随着各种各样的数模比赛源源不断地开展,时不时有小伙伴…

好长时间没更新了

这段时间一直都在忙着写CoagelEngine,没时间上来更新。花了一个月的时间,现在基本把渲染器的框架写好了。渲染器是用Visitor模式实现的。同时API无关,理论上来说同样可以支持Directx,不过我没用过DX,现在只实作了GLRen…

boostrap 鼠标滚轮滑动图片_16种基于Bootstrap的css3图片hover效果

bootstrap-image-hover是一款基于Bootstrap的css3图片hover效果。这组图片hover效果共16种特效。同时该特效也支持非Bootstrap版本。使用方法在页面中引入bootstrap相关文件和FontAwesome字体图标文件以及effects.min.css文件。HTML结构该css3图片hover效果的每一种效果都有它们…

从零开始学C++之STL(七):剩下5种算法代码分析与使用示例(remove 、rotate 、sort、lower_bound、accumulate)...

一、移除性算法 &#xff08;remove&#xff09; C Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 // TEMPLATE FUNCTION remove_copy template < class _InIt, class _OutIt, cl…

20 种物体破剖面图,真正的让你脑洞大开

全世界只有3.14 % 的人关注了数据与算法之美有很多东西的内部世界十分复杂&#xff0c;单纯的从表面看难以窥其精锐&#xff0c;今天咱们来看那些被劈成两半展示横截面的东西&#xff1a;1.安全气囊2.打火机3.各种枪械消音器4.集装箱船5.路虎车6.曲棍球头盔7.人类心脏8.数码相机…

一个女孩子对老公/男朋友的要求

*有点害羞&#xff0c;但曾在分别的街头&#xff0c;大声说我爱你。 *同我去庙里求签&#xff0c;轻轻捉住我的手一同跪下。 *言而有信。 *从来不迟到--我迟到他不生气。 *拥抱很久、很紧--每次我起身时几乎是需要慢慢推开他。 *睡得比我迟一点&#xff0c;醒来早一点。 …