コード例 #1
0
        public static async void AutoRefresh()
        {
            IsUpdate = false;
            var startTimeSpan  = TimeSpan.Zero;
            var periodTimeSpan = TimeSpan.FromMinutes(10);

            AutoRefreshTimer = new Timer(async(e) =>
            {
                var newData = await GetDetailsAsync();
                if (Details == null)
                {
                    Details = newData;
                }
                newData.Reverse();
                foreach (var tmp in newData)
                {
                    if (Details.All(p => p.Stat.TimeInfo != tmp.Stat.TimeInfo))
                    {
                        Details.Insert(0, tmp);
                        IsUpdate = true;
                    }
                }
                var tmpStats = new Stats(await GetStatAsync());
                if (Stats == null)
                {
                    var client     = new RestClient("https://tgcovidinfo.firebaseio.com/Stats.json");
                    client.Timeout = -1;
                    var request    = new RestRequest(Method.PATCH);
                    request.AddHeader("Content-Type", "application/json");
                    request.AddParameter("application/json", JsonConvert.SerializeObject(Stats), ParameterType.RequestBody);
                    await client.ExecuteAsync(request);
                }
                else
                if (Stats.TimeInfo != tmpStats.TimeInfo)
                {
                    var client     = new RestClient("https://tgcovidinfo.firebaseio.com/Stats.json");
                    client.Timeout = -1;
                    var request    = new RestRequest(Method.PATCH);
                    request.AddHeader("Content-Type", "application/json");
                    request.AddParameter("application/json", JsonConvert.SerializeObject(Stats), ParameterType.RequestBody);
                    await client.ExecuteAsync(request);
                }

                if (IsUpdate)
                {
                    var client     = new RestClient("https://tgcovidinfo.firebaseio.com/Stats.json");
                    client.Timeout = -1;
                    var request    = new RestRequest(Method.PATCH);
                    request.AddHeader("Content-Type", "application/json");
                    request.AddParameter("application/json", JsonConvert.SerializeObject(Details), ParameterType.RequestBody);
                    await client.ExecuteAsync(request);
                }
            }, null, startTimeSpan, periodTimeSpan);
        }