使用块的C#任务返回方法

使用块的C#任务返回方法,第1张

概述在C#中,任务或任务< T>方法是从using语句中返回的,是否存在任何未正确发生清理的风险,或者这是一种不良的做法?有什么问题因为它涉及使用块中变量的关闭? 考虑以下: public Task<string> GetAsync(string url){ using (var client = new HttpClient()) { return client.G 在C#中,任务或任务< T>方法是从using语句中返回的,是否存在任何未正确发生清理的风险,或者这是一种不良的做法?有什么问题因为它涉及使用块中变量的关闭?

考虑以下:

public Task<string> GetAsync(string url){    using (var clIEnt = new httpClIEnt())    {        return clIEnt.GetStringAsync(url);    }}

在上面的示例中,异步 *** 作由clIEnt.GetStringAsync(url)表示,我只是返回Task< string>让消费者等待.客户端在使用中会发生什么情况 – 它是在等待或垃圾收集之前清理干净,还是导致其他问题?

在使用这样的语句的原因中使用async和await会更好吗,如果是这样,为什么呢?

public async Task<string> GetAsync(string url){    string response = string.Empty;    using (var clIEnt = new httpClIEnt())    {        response = await clIEnt.GetStringAsync(url);    }    return response;}

要么

public async Task<string> GetAsync(string url){    using (var clIEnt = new httpClIEnt())    {        return await clIEnt.GetStringAsync(url);    }}

有什么不同?

解决方法 使用第一种方法不起作用,客户端将在完成其工作之前进行处理,您必须使用第二或第三版.

第2版​​和第3版之间没有实际差异,请根据您团队的风格使用.但是在第二版中字符串response = string.Empty;可以简化为字符串响应;如果所有代码路径都将覆盖它而不读取它,则没有理由为变量赋值.

总结

以上是内存溢出为你收集整理的使用块的C#任务返回方法全部内容,希望文章能够帮你解决使用块的C#任务返回方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1220113.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存