方法返回一个任务,如何获得返回值?
假设我有这个代码调用服务并返回一个任务:
public async Task<List> GetList() { client.BaseAddress = new Uri("https://localhost9999/"); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); HttpResponseMessage response = await client.GetAsync("api/listofstrings"); var json = response.Content.ReadAsStringAsync().Result; var myStr = JsonConvert.DeserializeObject<List>(json); var list = new List(myStr); return list; }
如果这个methpd只返回一个字符串列表,我可以这样做:
var myList = new List(); myList = GetList()
如何在任务中获得类似的结果? 我在考虑这个错误的方式吗? 当然我应该能够将方法的结果(字符串列表)分配给myList
?
您需要使用await
来获取async
方法的结果:
var myList = await GetList();
要使用await
你调用GetList
的方法也应该是async
。如果不是你可以使用.Result
属性,但这会阻止执行:
var myList = GetList().Result;
await
它,像这样:
var myList = new List(); myList = await GetList();
请注意,根据基于任务的异步模式 , GetList
应该有一个Async
后缀,这会向开发人员提示应该await
它:
var myList = new List(); myList = await GetListAsync();
而且,当然,创建一个新列表只是为了扔掉它是愚蠢的:
上述就是C#学习教程:方法返回一个任务,如何获得返回值?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
var myList = await GetListAsync();
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1006013.html