Jdragon 2015-07-30 10:05 采纳率: 0%
浏览 2212

.net 多线程 调用接口

 情况是这样的,我做了一个定时器,每天某个时间调用接口,发送所有数据。
由于一次数据可能多条 所以做两个分页查询(先说明下 为了让没有数据的时候 不从复调用接口,所以每天只执行一次)

在下面必须添加Thread.Sleep();否则无法按for循环执行。




 public void StartOnHour_GuoQi(object sender, System.Timers.ElapsedEventArgs e)
        {
            //整点发送
            if (e.SignalTime.Hour == hour_start && e.SignalTime.Minute == minute_start && e.SignalTime.Second == 0)
            {
                //执行请求处理
                try
                {
                    var param = new { pageindex = 0, pagesize = 10 };
                    var result_page = InvokeAgentService("OverdueDataCount", param);
                    dynamic page_Json = JKZL.Common.Core.Converts.Json2Dynamic.DynamicConvertHelper.ConvertJson(result_page);

                    //总记录数
                    int total = CommFunction.IntParse(page_Json.Data.TotalCount);
                    //总页数
                    int allpage = 0;

                    /*分页*/
                    if ((total % pageSize) == 0)
                    {
                        allpage = total / pageSize;
                    }
                    else
                    {
                        allpage = (total / pageSize) + 1;
                    }

                    for (int pageIndex = 0; pageIndex < allpage; pageIndex++)
                    {

                        var thread_GuoQi = new Thread(() =>
                        {
                            var parameters = new { pageindex = pageIndex, pagesize = pageSize };
                            var result = InvokeAgentService("GetOverdueData", parameters);

                            dynamic resutlJson = JKZL.Common.Core.Converts.Json2Dynamic.DynamicConvertHelper.ConvertJson(result);


                            if (resutlJson != null && resutlJson.Code == "10000")
                            {
                                foreach (var item in resutlJson.Data.Items)
                                {
                                    //执行代码

                            }
                            else
                            {
                                LogHelp.SysLog("请求返回结果错误结果--接口数据:" + result, "error");
                            }
                        });

                        thread_GuoQi.Start();
                        Thread.Sleep(50);
                    }
                }
                catch (Exception ex)
                {
                    LogHelp.SysLog("执行过期通知处理程序错误" + ex.Message, "error");
                }
            }

        }
  • 写回答

1条回答

  • threenewbee 2015-07-30 10:23
    关注

    关键是
    JKZL.Common.Core.Converts.Json2Dynamic.DynamicConvertHelper.ConvertJson(result);
    这个调用是否线程安全,如果不是,就需要同步。

    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料