【问题标题】:.NET MVC, asynchronous task in loop.NET MVC,循环中的异步任务
【发布时间】: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


    【解决方案1】:

    看来您遇到的问题与其他 SO question 相同

    您需要将提取的响应传回

    【讨论】:

    • 但是我想准备数据来响应,我想处理这些数据
    • 好的,我想我帮帮我,我检查一下这个解决方案
    • 这不起作用我在所有循环中都有相同的值:/
    猜你喜欢
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    • 2014-04-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2014-07-24
    • 1970-01-01
    相关资源
    最近更新 更多