コード例 #1
0
            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);
            }
コード例 #2
0
        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);
            }
        }