首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >“等待”关键字是否强制使用异步方法?

“等待”关键字是否强制使用异步方法?
EN

Stack Overflow用户
提问于 2017-03-13 23:09:13
回答 3查看 1.8K关注 0票数 3

我有以下方法:

代码语言:javascript
运行
AI代码解释
复制
async Task A()
{
    HttpClient client = new HttpClient();
    string response = await client.GetStringAsync("http://msdn.microsoft.com");        
}

async Task B()
{
    HttpClient client = new HttpClient();
    string response = await client.GetStringAsync("http://google.com");
}

即调用远程api,对响应进行处理,而不返回任何内容。

我将根据一种常见的方法这样称呼它:

代码语言:javascript
运行
AI代码解释
复制
protected void Page_Load(object sender, EventArgs e)
{
    A();
    B();

    // Do further task after this which is not dependent on response of A or B
}

编译器对A和B方法发出以下警告:

由于没有等待此调用,因此在调用完成之前,将继续执行当前方法。考虑将“等待”操作符应用于呼叫的结果。

我不需要从A或B方法返回任何响应,所以我想在A()和B()前面省略“等待”关键字,因为我想在A和B调用之后执行代码"//在此之后执行进一步的任务,这不依赖于A或B的响应“而不需要等待A或B的响应。

我可以忽略编译器警告吗?

我是不是误用了API?

我不能在A和B方法上删除异步操作符,因为HttpClient.GetStringAsync需要它。

编辑

我去了这个链接https://softwareengineering.stackexchange.com/questions/331353/does-omitting-await-keyword-once-in-the-call-stack-break-the-asynchronous-behavi

并发现以下评论:

“当您不等待异步方法时,这相当于调用Task.Run(()=>A())。”

是真正的吗?

EN

回答 3

Stack Overflow用户

发布于 2017-03-13 23:13:03

基本上,await确保Task完成它的执行。在不使用async的情况下运行await方法就像启动Task而不监视它的进度和结果一样。

例如,在ASP.Net环境中,如果任务从请求线程启动,则会导致任务中止。

票数 0
EN

Stack Overflow用户

发布于 2017-03-13 23:16:24

更新:ASP.NET中的火与忘

在您的代码中,在这之后执行进一步的任务,这不依赖于A或B部件的响应,而是在方法AB完成之前执行(除非这些非常快)。

当您使用await并且该方法击中该行时,它将向调用方返回一个Task,调用方继续执行第二行(在您的情况下是B),因为B执行相同的操作,那么调用这两个方法后的部分执行。

侧-注:

每个使用await关键字的方法都应该标记为异步,这是为了进行向后的可比性。但是,编译器只是警告您在调用者中没有等待结果,对于初学者来说,这在很多情况下都是一个很好的警告。

票数 0
EN

Stack Overflow用户

发布于 2017-03-13 23:21:52

如果A和B的执行与Page_Load流的其余部分是异步的,则不必对它们进行await

与这里给出的选项相比,另一个选项是向读取代码的其他人显式地显示您忽略了这个警告,那就是用#实用化禁用它。

代码语言:javascript
运行
AI代码解释
复制
#pragma warning disable warning-list  

A();
B();

#pragma warning restore warning-list 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42779714

复制
相关文章
Three TextureLoader纹理贴图不显示图片(显示黑色)的原因分析
问题在MeshLambertMaterial材质,把它改成MeshBasicMaterial即可显示图片。
Dawnzhang
2022/09/29
3.8K0
Metal Shading Language - 语法小结Metal Shading Language - 语法小结
纹理类型是一个句柄,指向一个一维/二维/三维的纹理数据;相当于OpenGL中的textureBufferID.
用户8893176
2021/08/09
1.1K0
Metal Shading Language - 语法小结Metal Shading Language - 语法小结
OpenGL学习笔记(二)——渲染管线&着色语言
导语 :渲染管线(渲染流水线),一般由显示芯片(GPU)内部处理图形信号的并行处理单元组成。这些并行处理单元两两之间相互独立。不同的型号硬件上独立处理单元的数量有很大差异。 与CPU串行执行不同,渲染
MelonTeam
2018/01/04
2.1K0
OpenGL学习笔记(二)——渲染管线&着色语言
Shader-基础纹理-遮罩纹理
遮罩纹理(mask texture)控制光照的强度,获得更加细腻的效果,通过遮罩纹理控制光照。在制作地形材质的时候混合多张图片,遮罩纹理控制如何混合这些纹理。 通过采样得到的纹素值与某种表面属性相乘,来更加精准的控制模型表面的各种属性。 在代码中添加了BumpMap来进行凹凸纹理效果,通过SpecularMask实现控制高光的光照
祝你万事顺利
2019/05/28
1.2K0
Shader-基础纹理-渐变纹理
一种基于冷暖色调的着色技术,通过渐变纹理控制漫反射光照。核心部分来说用过使用halfLambert构建一个纹理坐标,用这个纹理坐标来对渐变纹理进行采样。
祝你万事顺利
2019/05/28
1.2K0
不联网不插U盘就安全了?黑客能用声波攻击你的硬盘
《不联网不插U盘就安全了?黑客能用声波攻击你的硬盘》文章摘要:研究人员发现了一种利用声波攻击硬盘的方法,可以导致硬盘损坏和数据丢失。攻击者可以利用声波干扰机械硬盘的正常工作模式,使其产生暂时或者永久拒绝服务状态,从而阻止数据被访问。这种攻击方式需要物理接触硬盘,因此可以通过远离硬盘来避免受到攻击。研究人员建议使用加密等方法保护硬盘中的数据。
企鹅号小编
2018/01/04
1.9K0
不联网不插U盘就安全了?黑客能用声波攻击你的硬盘
WebGL2系列之采样器对象
如果我们希望从同一个图片多次读取像素信息,但是每次读取的时候使用的过滤方式不一样, 此时我们需要创建两个不同的纹理对象。
用户3158888
2019/09/09
7600
Direct3D 11 Tutorial 7:Texture Mapping and Constant Buffers_Direct3D 11 教程7:纹理映射和常量缓冲区
在上一个教程中,我们为项目引入了照明。 现在我们将通过向我们的立方体添加纹理来构建它。 此外,我们将介绍常量缓冲区的概念,并解释如何使用缓冲区通过最小化带宽使用来加速处理。
Zoctopus
2018/12/06
6080
纹理压缩
本文介绍了纹理压缩的基本概念、原理、常用压缩方式、压缩工具及相关技术标准,旨在帮助读者了解纹理压缩的基本知识,从而更好地进行纹理压缩相关的实践。
MelonTeam
2018/01/04
1.6K0
纹理压缩
12.QT-通过QOpenGLWidget显示YUV画面,通过QOpenGLTexture纹理渲染YUV
在上章11.QT-ffmpeg+QAudioOutput实现音频播放器,我们学习了如何播放音频,接下来我们便来学习如何通过opengl来显示YUV画面
诺谦
2020/11/04
3.9K0
12.QT-通过QOpenGLWidget显示YUV画面,通过QOpenGLTexture纹理渲染YUV
Pytorch的数据采样器
class torch.utils.data.Sampler(data_source)[source]
狼啸风云
2020/06/10
2K0
文字转语音,1行Python代码搞定,不联网也能用
开源项目:python-office的功能一直在更新中,今天给大家发布一个新功能:文字转语音。
程序员晚枫
2023/09/06
5220
文字转语音,1行Python代码搞定,不联网也能用
CUDA优化的冷知识18| texture和surface
https://docs.nvidia.com/cuda/cuda-c-best-practices-guide/index.html 来阅读原文。
GPUS Lady
2021/02/05
1.2K0
OpenGL ES _ 着色器_纹理图像
玩过游戏的同学们,都知道在游戏人物身上穿的那个叫皮肤,专业点将那个就叫做纹理图像。GLSL 支持在顶点和片段着色器使用纹理图像。
酷走天涯
2018/09/14
1.3K0
Shader-高级纹理-立方体纹理
是环境映射(EnvironmentMapping)一种实现方式。 纹理采样:对立方体采样需要提供一个三维的纹理坐标,这个三维纹理坐标表示了我们在世界空间下的一个3D、方向。
祝你万事顺利
2019/05/29
9010
Qt官方示例-字体采样器
❝预览系列字体的例子。❞   建立字体树显示。 QFontDatabase database; fontTree->setColumnCount(1); fontTree->setHeaderLabels(QStringList() << tr("Font")); foreach (QString family, database.families()) { const QStringList styles = database.styles(family); if (styles.i
Qt君
2023/03/17
4170
Qt官方示例-字体采样器
OpenGL(八)--纹理相关APIOpenGL(八)--纹理相关API
OpenGL(八)--纹理相关API 1. 原始图像数据 //存储图像数据所占内存大小 size = 图像的高度 * 图像的宽度 * 每个像素所占字节数 像素所占字节数:一般为4Byte,包含RGBA四个通道,每个通道为1Byte(8Bit) 2. 认识函数 像素存储方式 //改变像素存储方式 void glPixelStorei(GLenum pname,GLint param); //恢复像素存储方式 void glPixelStoref(GLenum pname,GLint param); /
用户8893176
2021/08/09
1.2K0
OpenGL(八)--纹理相关APIOpenGL(八)--纹理相关API
Metal入门教程总结
本文介绍Metal和Metal Shader Language,以及Metal和OpenGL ES的差异性,也是实现入门教程的心得总结。
落影
2018/08/21
5.1K0
Metal入门教程总结
纹理投影测试
GPU Gems3里有个不规则地形(X,Y,Z三个方向上都有面), 这时就没法简单地用X,Z坐标来计算UV了
逍遥剑客
2019/02/20
6630
点击加载更多

相似问题

采样器不包扎纹理

12

纹理采样器ID不映射到纹理单元

27

绑定OpenGL纹理采样器

10

对纹理采样器纹理单位值的困惑

13

纹理对象和采样器的多重纹理化理论

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档