方法return一个任务,如何得到return-value?

Method return a task, how get the return-value?

假设我有调用服务和 returns 任务的代码:

 public async Task<List<string>> GetList()
        {

            client.BaseAddress = new Uri("http://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<string>>(json);
                var list = new List<string>(myStr);


            return list;
        }

如果这个 methpd 只是返回一个字符串列表,我可以这样做:

var myList = new List<String>();
myList = GetList()

我怎样才能通过任务获得类似的结果?我可能以错误的方式思考这个问题吗?当然,我应该能够将方法的结果(字符串列表)分配给 myList?

await吧,像这样:

var myList = new List<String>();
myList = await GetList();

请注意,根据 Task-based Asynchronous PatternGetList 应该有一个 Async 后缀,这提示开发人员应该 awaited:

var myList = new List<String>();
myList = await GetListAsync();

当然,创建一个新列表只是为了丢弃它是愚蠢的:

var myList = await GetListAsync();

您需要使用 await 来获取 async 方法的结果:

var myList = await GetList();

要使用 await 你调用 GetList 的方法应该是 async too.If 不是你可以使用 .Result 属性 ,但这会阻止执行:

var myList = GetList().Result;