使用块的C#任务返回方法
发布时间:2020-12-15 23:33:39 所属栏目:百科 来源:网络整理
导读:在C#中,任务或任务 T方法是从using语句中返回的,是否存在任何未正确发生清理的风险,或者这是一种不良的做法?有什么问题因为它涉及使用块中变量的关闭? 考虑以下: public Taskstring GetAsync(string url){ using (var client = new HttpClient()) { retur
在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;可以简化为字符串响应;如果所有代码路径都将覆盖它而不读取它,则没有理由为变量赋值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |