zoukankan      html  css  js  c++  java
  • 并行执行同步任务

    同步执行多个任务:Parallel.For(1, pageCount + 1, i => DataSync(i, fieldMappings));

    /// <summary>
            /// 定时同步逻辑
            /// </summary>
            /// <returns></returns>
            public bool SyncGuest()
            {
                // 获取总数
                var totalCount = GetTotalCount(EVENTID);
    
                if (totalCount == 0)
                {
                    Console.WriteLine("没有需要同步的数据");
    
                    return true;
                }
    
                // 页数
                int pageCount = (int)Math.Ceiling((double)(totalCount / 50.0));
    
                // 发布后运行路径
                var mappingFilePath = Path.GetFullPath($"{AppDomain.CurrentDomain.BaseDirectory}/Json/ZFCateCertFieldMapping.json");
                // 本地运行路径
                //var mappingFilePath = Path.GetFullPath("../../Json/ZFCateCertFieldMapping.json");
                var fieldMappings = JsonConvert.DeserializeObject<List<ZFCateCertFieldMapping>>(File.ReadAllText(mappingFilePath));
    
                if (fieldMappings != null)
                {
                     // 并行执行同步任务
                    var result = Parallel.For(1, pageCount + 1, i => DataSync(i, fieldMappings));
    
                     return result.IsCompleted ? true : false;
                }
                else
                {
                    Console.WriteLine("大会的配置字段文件为空,不能同步");
                    FileLogHelper.Log("大会数据同步数据失败-字段匹配失败:匹配字段为空。");
                }
    
                return true;
            }
    /// <summary>
            /// 并行同步数据
            /// </summary>
            /// <param name="pageIndex">分页中的第几页</param>
            /// <returns>返回的是成功与失败的条数消息</returns>
            private void DataSync(int pageIndex, List<ZFCateCertFieldMapping> fieldMappings)
            {
                const long eventId = EVENTID;
    
                var query = new HYQuery<QueryEventJoin>()
                    .EQ(a => a.EventId, eventId)
                    .EQ(a => a.Status, HYEventJoin.JoinStatus.已审核)
                    .FieldNamesEQ("ExtraFields.Field1585023508", "政审通过");
    
                // 如果不是同步所有数据,则需要加上时间限制
                if (!IsSyncAll)
                {
                    query = query.And(GetDateQuery());
                }
    
                // 分页取数据
                var res = RestHelper.EventJoin.GetJoins(eventId, query, pageIndex, 50);
    
                if (res.IsOk() && res.Body.List.Any())
                {
                    // 开始同步
                    BeginDataSync(res.Body.List, fieldMappings);
                }
                else
                {                
                    FileLogHelper.Log("大会数据同步数据失败-获取参会人出错或没有需要同步的数据");
                }
            }

    执行完后,有个状态,表示是否执行完

    // 并行执行同步任务
                    var result = Parallel.For(1, pageCount + 1, i => DataSync(i, fieldMappings));
    
                    return result.IsCompleted ? true : false;
  • 相关阅读:
    test
    flash链接需要后台调用时的插入flash方法
    js验证码倒计时
    设置Cookie
    用in判断input中的placeholder属性是否在这个对象里
    常用的正则表达式规则
    webApp添加到iOS桌面
    .substr()在字符串每个字母前面加上一个1
    PAT 甲级1001 A+B Format (20)(C++ -思路)
    PAT 1012 数字分类 (20)(代码+测试点)
  • 原文地址:https://www.cnblogs.com/yxzs/p/11199901.html
Copyright © 2011-2022 走看看