public async Task Reload(string taskType) { var hasTaskdeletgate = SpiderTaskDelegate.ContainsKey(taskType); if (hasTaskdeletgate) { if (!TaskIsRunning) { TaskIsRunning = true; var spiderLog = await spiderDbContext.SpiderLogs.FirstOrDefaultAsync(x => x.Type == taskType); Run(spiderLog); } } }
private async Task Run(SpiderLog spiderLog = null) { //SpiderLog spiderLog; if (spiderLog == null) { if (currentId < 1) { spiderLog = await NextTask(); } else { spiderLog = await NextTask(currentId); } } while (spiderLog != null) { var runner = new PhantomJsRunner(null, "", ""); var webDriver = runner.WebDriver; var hasErr = false; try { var needProcess = SpiderTaskDelegate.ContainsKey(spiderLog.Type); if (needProcess) { webDriver.Navigate().GoToUrl(spiderLog.TargetUrl); await SpiderTaskDelegate[spiderLog.Type](spiderLog, webDriver); } } catch (Exception exc) { Console.WriteLine(exc.Message); hasErr = true; } currentId = spiderLog.Id; webDriver.Quit(); Thread.Sleep(speedRun); spiderLog.ReloadSuccess = !hasErr; await UpdateTask(spiderLog); spiderLog = await NextTask(currentId); } TaskIsRunning = false; }