【发布时间】:2016-07-20 19:31:39
【问题描述】:
我有以下方法:
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) 行时,它刚刚超出断点,我无法返回到该方法。
【问题讨论】:
标签: c# asynchronous async-await