public void ProcessServerData(ServerData serverdata) { log.Debug(string.Format("[ServerID {0}] Server update started", serverdata.ID)); serverdata.InitializeUpdate(_date, _dateID); HttpHelper helper = new HttpHelper(); Random rand = new Random(); Dictionary <string, string> postDic = new Dictionary <string, string>(); string referer = serverdata.SwfPath + "/[[DYNAMIC]]/1"; int currentRetryCount = 0; #if DEBUG for (int i = 1; i <= 3; i++) { #else for (int i = 1; i < 100; i++) { #endif string jsonResult = ""; postDic["api_pageno"] = i.ToString(); postDic["api_verno"] = "1"; postDic["api_token"] = serverdata.ApiToken; helper.CTRHttp(serverdata.FullPath, referer, postDic, ref jsonResult); if (BatchParse(jsonResult, serverdata, i)) { Thread.Sleep(rand.Next(700, 2000)); currentRetryCount = 0; } else { if (currentRetryCount == 2) { string errMsg = string.Format("[ServerID {0}] Page {1}, request failed!", serverdata.ID, i); log.Error(errMsg); throw new WebException(errMsg); } i--; Thread.Sleep(1000 * 3 * (int)Math.Pow(10, currentRetryCount++)); } } DateTime newtime = new DateTime(serverdata.Date.Year, serverdata.Date.Month, serverdata.Date.Day, serverdata.Date.Hour, 2, 0).AddHours(12); serverdata.ErrorrCount = 0; serverdata.NextUpdateTime = newtime; serverdata.SaveToDataBase(); serverdata.UpdateTimeToDataBase(); log.Info(string.Format("[ServerID {0}] Server update finished", serverdata.ID)); }