【发布时间】:2017-09-06 10:10:03
【问题描述】:
我是 ASP 异步编程的新手,我有一个问题。我想连接到外部 api,我创建了我的类任务,这是一个类的 znippet
public class Tasks
{
HttpClient httpc = new HttpClient();
public async System.Threading.Tasks.Task<String> getStations()
{
var uri = new Uri("http://api.gios.gov.pl/pjp-api/rest/station/findAll");
var response = await httpc.GetAsync(uri);
return await response.Content.ReadAsStringAsync();
}
public async System.Threading.Tasks.Task<String> getStationDetails(int id)
{
string path = "http://api.gios.gov.pl/pjp-api/rest/station/sensors/" + id;
var uri = new Uri(path);
var response = await httpc.GetAsync(uri);
return await response.Content.ReadAsStringAsync();
}
public async System.Threading.Tasks.Task<String> getStationValues(int id)
{
string path = "http://api.gios.gov.pl/pjp-api/rest/data/getData/" + id;
var uri = new Uri(path);
var response = await httpc.GetAsync(uri);
return await response.Content.ReadAsStringAsync();
}
然后我为我的请求创建异步控制器,在那里我准备数据以响应
public async Task<ActionResult> prepareAirContitionData(int id)
{
Task<string> taskStationDetails = tasks.getStationDetails(id);
string stationDetail = await taskStationDetails;
List<Station> stationsObj = JsonConvert.DeserializeObject<List<Station>>(stationDetail);
List<Task<string>> stationsValues = new List<Task<string>>();
foreach(var station in stationsObj)
{
stationsValues.Add(tasks.getStationValues(station.stationId));
}
string[] war = await Task.WhenAll(stationsValues.ToArray());
Console.Write(war);
return Json("", JsonRequestBehavior.AllowGet);
}
这是我的任务草稿。当我收集任务并等待它时,问题出在循环中,它们没有显示在我的字符串数组中,只有一个变量。
【问题讨论】:
标签: c# asp.net asp.net-mvc asynchronous