private void _bw_DoWork(object sender, DoWorkEventArgs e) { var web = new HtmlWeb(); HtmlDocument doc; //HAP try { doc = web.Load(_uri); } catch { e.Cancel = true; return; } if ((web.StatusCode != HttpStatusCode.OK) | (doc.DocumentNode.InnerHtml.Contains("List unavailable")) | (doc.DocumentNode.InnerHtml.Contains("The maximum server load limit has been reached"))) { e.Cancel = true; return; } _list = doc.DocumentNode.SelectSingleNode("//table[@class='players-online-list tborder']") .Descendants("tr") .Skip(3) .Where(tr => tr.Elements("td").Count() > 1) .Select(tr => tr.Elements("td").Select(td => td.InnerText.Trim()).ToList()) .ToList(); //remove table header - done with skip(2) //_list.RemoveAt(0); var temptable = new DataSet.PlayersDataTable(); foreach (var lrow in _list) { var crow = Table.Rows.Find(lrow[0]); lrow.Insert(1, Updater.Tags.GetTag(lrow[0])); lrow.Add("New"); lrow[0] = lrow[0].Replace("<", "<").Replace(">", ">"); lrow[6] = SetRowAttr(crow, lrow); lrow[6] = ScanRow(lrow); // ReSharper disable CoVariantArrayConversion temptable.Rows.Add(lrow.ToArray()); // ReSharper restore CoVariantArrayConversion } e.Result = temptable; //GetList ends }
private void _bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { if (e.Cancelled) { Notifier.Pop("Can't reach the player list!"); return; } Table = (DataSet.PlayersDataTable)e.Result; Refreshed?.Invoke(this, e); }