async Task ExecuteLoadJogadoresCommand() { if (IsBusy) { return; } IsBusy = true; try { Jogadores.Clear(); var items = await JogadorDataStore.GetItemsAsync(true); foreach (var item in items) { Jogadores.Add(item); } JogadorDataStore.Listen(Jogadores); } catch (Exception ex) { Debug.WriteLine(ex); } finally { IsBusy = false; } }
/// <summary> /// Tenta recuperar o arquivo de placar, reparando ou deletando dados corrompidos /// </summary> private void RepararArquivoDePlacar() { if (!File.Exists(FilePath)) { var Dado = ""; var Pontos = 0.0; var DadosCorrompidos = 0; // Limpa a lista e começa do zero Jogadores.Clear(); // Lê todos os dados do arquivo using (StreamReader sr = new StreamReader(File.OpenRead(FilePath))) { Dado = sr.ReadLine(); var DadoCorrompido = false; while (Dado != null) { // Tenta checar por pontuações corrompidas try { Pontos = Double.Parse(Dado.Split('=')[1]); } catch (FormatException e) { // Tenta corrigir pontuações corrompidas try { Pontos = RemoveLetras(Dado.Split('=')[1]); }catch (FormatException e2) { // Caso não dê para corrigir, trata-o como dado corrompido DadoCorrompido = true; DadosCorrompidos++; } } // Se o dado não estiver mais corrompido adiciona-o a lista if (!DadoCorrompido) { Jogadores.Add(new Player(Dado.Split('=')[0], Pontos)); } } } // Recria o arquivo de placar using (StreamWriter st = File.AppendText(FilePath)) { st.WriteLine("[Placares]"); // Testa se há algum dado salvo if (Jogadores.Count > 0) { // Reescreve os dados salvos foreach (var Jogador in Jogadores) { st.WriteLine(Jogador.Nome + "=" + Jogador.Pontuacao); } MessageBox.Show("Placar recuperado com êxito! Dados Perdidos: " + DadosCorrompidos + "!", "Placar Recuperado!", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { // Erro exibido quando todos os dados foram perdidos MessageBox.Show("Falha ao recuperar os dados! Todos os dados estavam corrompidos, portanto o arquivo de placar foi resetado!", "Erro!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } }
public void LimparTime() { Jogadores.Clear(); }