情况是这样的,我做了一个定时器,每天某个时间调用接口,发送所有数据。
由于一次数据可能多条 所以做两个分页查询(先说明下 为了让没有数据的时候 不从复调用接口,所以每天只执行一次)
在下面必须添加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");
}
}
}
关键是
JKZL.Common.Core.Converts.Json2Dynamic.DynamicConvertHelper.ConvertJson(result);
这个调用是否线程安全,如果不是,就需要同步。