예제 #1
0
        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("&#60;", "<").Replace("&#62;", ">");

                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
        }
예제 #2
0
        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);
        }