public static List <SynUploadEntity> GetUploadData(out Dictionary <string, long> dictEndTicks) { dictEndTicks = new Dictionary <string, long>(); var dbAccounts = AccountHelper.GetDbAccounts(); var ets = new List <SynUploadEntity>(); var maxCnt = 1000; int dtCnt = 0; foreach (string dbAccount in dbAccounts) { long endTicks; var uploadEt = UploadDataProducer.GetUploadData(dbAccount, maxCnt - dtCnt, out endTicks); dictEndTicks[dbAccount] = endTicks; dtCnt += uploadEt.DataList.Count; ets.Add(uploadEt); if (dtCnt >= maxCnt) { break; } } return(ets); }
private static async void Syn(bool isCallByRecursive = false, bool hasShortcutEver = false, bool hasRobotRuleEver = false) { try { lock (_synObj) { if ((!isCallByRecursive && IsSyning) || DbSyner.IsBanSyn) { return; } _synWaiter.Reset(); } if (!isCallByRecursive) { _preSynTime = DateTime.Now; } Dictionary <string, long> dictEndTicks; var upDatas = UploadDataProducer.GetUploadData(out dictEndTicks); if (!upDatas.xIsNullOrEmpty()) { var downDatas = await BotApi.TransferData(upDatas); if (downDatas == null) { throw new Exception("同步失败"); } LogSyncDatas(upDatas, downDatas); SavePreUploadSynTick(dictEndTicks); SaveToDb(downDatas, ref hasShortcutEver, ref hasRobotRuleEver); if (HasNewData(upDatas, downDatas)) { Syn(true, hasShortcutEver, hasRobotRuleEver); } else { _synWaiter.Set(); SyncFinished(null); if (hasShortcutEver) { RaiseEventHasShortcutDowned(); } if (hasRobotRuleEver) { RaiseEventHasRobotRuleDowned(); } foreach (var synUploadEntity in upDatas.xSafeForEach <SynUploadEntity>()) { Params.SetLatestSynOkTime(synUploadEntity.DbAccount); } if (Params.NeedTipReSynDataOk) { MsgBox.ShowTip("已重新下载全部数据", "提示"); Params.NeedTipReSynDataOk = false; } } } else { _synWaiter.Set(); } } catch (Exception ex) { _synWaiter.Set(); SyncFinished(ex.Message); Log.Error("同步数据出错,err=" + ex.Message); } }