private static async void ServersParse() { ServerList.cts?.Dispose(); ServerList.cts = new CancellationTokenSource(); // Prepare ping string pingData = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; byte[] pingBuffer = Encoding.ASCII.GetBytes(pingData); PingOptions pingOptions = new PingOptions(64, true); var strings = ServerList._serversRaw.Split(new string[] { "<br>" }, StringSplitOptions.RemoveEmptyEntries); foreach (var data in strings) { var parts = data.Split(';'); var sData = new ServerData(); sData.counter = ServerList.counter; ServerList.counter++; sData.IP = parts[0]; sData.port = int.Parse(parts[1]); var fav = false; // TODO // try // { // if (this._window.favourites.TryGetValue(sData.Address, out ServerData cache)) // { // fav = cache.IsFavourite; // }; // } // catch (NullReferenceException e) { } sData.IsFavourite = fav; sData.serverInfo = ServerInfo.Parse(parts[2]); sData.serverPlayers = ServerPlayers.Parse(parts[3]); // ServerList.PingICMPAsync(sData, ServerList.PING_THRESHOLD, pingBuffer, pingOptions); ServerList.PingUnity(sData, ServerList.PING_THRESHOLD); await Task.Delay(0); } }