NET问答: using 和 await using 有什么不同?
咨询区
Justin Lessard:
我注意到在某些情况下,visual studio 经常推荐我这么做。
await using var disposable = new Disposable();
// Do something
来替代下面的这种写法
using var disposable = new Disposable();
// Do something
请问 using
和 await using
到底有什么不同 ?或者说在使用上该怎么抉择?
回答区
Community:
典型的同步 using
通常能调用 Dispose()
方法是因为这个对象实现了 IDisposable
接口,比如下面这样。
using var disposable = new Disposable();
// Do Something...
大家应该都知道,它等价于
IDisposable disposable = new Disposable();
try
{// Do Something...
}
finally
{disposable.Dispose();
}
新的异步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能够异步化是一个非常好的功能,毕竟它的作用就是用来释放非托管资源,也能看到以后的大趋势就是代码异步化,函数化????????????
NET问答: using 和 await using 有什么不同?相关推荐
- NET问答: 多个 await 和 Task.WaitAll 是等价的吗?
咨询区 vidalsasoon: 我有下面两个方法: MethodA: 使用多个 await 方式 public async Task<IHttpActionResult> MethodA ...
- 多线程面试题_100多线程和Java并发面试问答–最终清单(PDF下载)
多线程面试题 在这篇文章中,我们将提供有关多线程和Java并发面试问答的综合文章. 编者注:并发始终是开发人员的挑战,编写并发程序可能非常困难. 引入并发时,有很多事情可能会崩溃,并且系统的复杂性会大 ...
- 全网最详细中英文ChatGPT-GPT-4示例文档-从0到1快速入门AI智能问答应用场景——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)
从0到1快速入门AI智能问答应用场景 Introduce 简介 setting 设置 Prompt 提示 Sample response 回复样本 API request 接口请求 python接口请 ...
- Java 多线程 | 并发知识面试问答总结
写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...
- 为何在 JavaScript 中使用顶层 await?
原文地址:Why Should You Use Top-level Await in JavaScript?[1] 原文作者:Mahdhi Rezvi[2] 译者:Chor 作为一门非常灵活和强大的语 ...
- 手把手快速搭建智能语音客服——保险问答实践
零基础快速搭建全流程智能语音客服系统--保险问答实践 1. 背景介绍 智能语音客服是智能客服的重要组成部分,在语音相关的人机交互场景中都有所应用,如智能外呼机器人,智能呼入机器人,虚拟人客服,数字员工 ...
- 分层条件关系网络在视频问答VideoQA中的应用:CVPR2020论文解析
分层条件关系网络在视频问答VideoQA中的应用:CVPR2020论文解析 Hierarchical Conditional Relation Networks for Video Question ...
- setTimeout、setInterval、promise、async/await的顺序详解(多种情况,非常详细~)
本文很长,列举的情况很多. 在阅读本文之前,如果您有充足的时间,请新建一个项目与本文一同实践. 每段代码都有对应的解释,但是自己动手尝试印象才会更深哦~ setInterval:表示多久执行一次,需要 ...
- Await, and UI, and deadlocks! Oh my!
It's been awesome seeing the level of interest developers have had for the Async CTP and how much us ...
最新文章
- 对比学习系列论文CPCforHAR(一):Contrastive Predictive Coding for Human Activity Recognition
- 利用ASP控制WEB打印代码方法集合
- android activity view 区别,片段中onCreateView和onViewCreated之间的区别
- 1 游戏逻辑架构,Cocos2d-x游戏项目创建,HelloWorld项目创建,HelloWorld程序分析,(CCApplicationProtocol,CCApplication,AppDeleg
- html点击按钮获取列表数据传递到页面,随笔:ajax传递数组,layui父子页面传值,下来菜单赋值,父页面数据获取,表格数据替换为字符串...
- 电商入门_仓库管理系统wms
- 【ArcGIS教程】ArcGIS软件操作——地图配准
- linux云计算7 24,Linux云计算学习笔记day24
- 天池大数据竞赛——UI特征统计
- 【数据应用案例】用户画像与实践案例
- “黑客帝国”只是另一个幻想,但我们痴迷于此
- 美国绿卡基础知识:I-539和I-129表格的应用回复新帖
- 云诊所管理系统 云诊所管理软件 诊所管理软件 诊所管理系统
- 第一章 基础 (续 在IIS中寄宿服务)
- 携创教育:自考本科文凭有用吗?国家承认吗?
- 加密世界将迎来以太坊的“黄金十年”
- c语言 拷入pdf,怎么样才能把PDF文档从电脑拷到U盘
- OpenJudge NOI题库 1.5编程基础之循环控制
- 智慧武汉地理信息大数据中心上线 比百度地图更全
- END-TO-END OPTIMIZED IMAGE COMPRESSION 论文阅读笔记