以下是我的方法:
public string RetrieveHolidayDatesFromSource() {
var result = this.RetrieveHolidayDatesFromSourceAsync();
/** Do stuff **/
var returnedResult = this.TransformResults(result.Result); /** Where result gets used **/
return returnedResult;
}
private async Task<string> RetrieveHolidayDatesFromSourceAsync() {
using (var httpClient = new HttpClient()) {
var json = await httpClient.GetStringAsync(SourceURI);
return json;
}
}
上述方法不起作用,似乎无法正确返回任何结果。我不确定在哪里漏了一个语句来强制等待结果?我想让RetrieveHolidayDatesFromSource()
方法返回一个字符串。
下面的方法可以正常工作,但是它是同步的,我相信它可以改进?请注意,下面是同步的,我希望将其更改为异步,但出于某种原因无法理解。
public string RetrieveHolidayDatesFromSource() {
var result = this.RetrieveHolidayDatesFromSourceAsync();
/** Do Stuff **/
var returnedResult = this.TransformResults(result); /** This is where Result is actually used**/
return returnedResult;
}
private string RetrieveHolidayDatesFromSourceAsync() {
using (var httpClient = new HttpClient()) {
var json = httpClient.GetStringAsync(SourceURI);
return json.Result;
}
}
我是不是漏了什么?
注意:由于某种原因,当我在上述异步方法上下断点时,当它到达var json = await httpClient.GetStringAsync(SourceURI)
这一行时,它就会跳出断点,我无法再进入该方法。
public Task<string> RetrieveHolidayDatesFromSourceAsync()
缺少await
吗? - Nick Weaverawait
。 - Stephen ClearyAsync
后缀,但其实现不使用async
/await
。 - Stephen Cleary