Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Aplicação não para

Olá, utilizando a atividade 02 da parte 05 como exemplo, tentei fazer com que a operação parasse quando a palavra "parar" fosse digitada no console.

public static void TesteFluxoConsole()
        {
            using (var streamEntrada = Console.OpenStandardInput())
            using (var fs = new FileStream("testeConsole.txt", FileMode.Create))
            {
                var buffer =new byte[1024];
                var bytesLidos = -1;
                var utf8 = Encoding.UTF8;
                string parar = "continuar";

                while(parar != "parar")
                {
                    bytesLidos = streamEntrada.Read(buffer, 0, buffer.Length);

                    fs.Write(buffer, 0, bytesLidos);
                    fs.Flush();

                    parar = utf8.GetString(buffer, 0, bytesLidos);

                    Console.WriteLine($"Total de Byteslidos: {bytesLidos}");
                    Console.WriteLine(parar == "parar");
                }

                Console.WriteLine("Aplicação finalizada");
            }
        }

Porém, quando efetuei a verificação " (parar == "parar" )" recebi "False", mesmo quando "parar" era digitado no console. Qual o motivo disso?

1 resposta
solução!

Olá Bernardo, tudo bem?

Talvez a variável não esteja recebendo o texto como você espera. Quando comparamos textos, estes devem estar exatamente iguais, caso o contrário sempre lhe será retornado False. Ex: "parar" é diferente de " parar".

Tente imprimir no console o valor da variável em cada iteração para ter a certeza de que este valor está sendo atribuído conforme a condicional que você escreveu.

Também gostaria de deixar como dica, que nessa situação você procure utilizar outros parâmetros de comparação (como o tamanho do arquivo por exemplo), pois desta forma você sempre conseguirá interromper o While de forma mais assertiva.

Espero ter conseguido te ajudar.

Grande abraço.