none
Como verificar se um arquivo existe durante 10 segundos. RRS feed

  • Discussão Geral

  • Olá pessoal, nessa rotina, estou tentando fazer com que, se o arquivo não for localizado em 10 segundos, sair fora do while, interromper a procura, mas da forma como está, ele entra em um loop infinito.

           int contador = 10;

            while (!System.IO.File.Exists(@"C:\\ESTOQUE\arquivo.txt"))
            {
                 this.label1.Text = Convert.ToInt32(contador).ToString();
                 this.timer1.Enabled = true;
            }

            private void timer1_Tick(object sender, EventArgs e)
            {
                contador = contador - 1;
                this.label1.Text = contador.ToString();
                if (contador == 0)
                {
                    this.timer1.Enabled = false;
                }
            }

    Windows Form, C#

    Obrigado.

    terça-feira, 6 de outubro de 2020 13:59

Todas as Respostas

  • Olá amigo!

    segundo o teu código o loop para se encontrar o arquivo, se não tenta por 10 segundo que suponho ter definido o intervalo do teu timer a 10000, então para quebrar o loop experimente este código :

    int contador = 10;

    while (!System.IO.File.Exists(@"C:\\ESTOQUE\arquivo.txt"))
            {
                 this.timer1.Enabled = true;

                 if(contador == 0)

                     break;

            }

            private void timer1_Tick(object sender, EventArgs e)
            {
                contador = contador - 1;
                this.label1.Text = contador.ToString();
                if (contador == 0)
                {
                    this.timer1.Enabled = false;
                }
            }

    Espero que te ajudou.

    quarta-feira, 7 de outubro de 2020 09:10
  • Ola Porter,

    Aqui outra solucao tambem pra voce:

    watcher.Created += OnChanged;
    // Define the event handlers.private static void OnChanged(object source, FileSystemEventArgs e) => // Specify what is done when a file is changed, created, or deleted. Console.WriteLine($"File: {​​​​​​​​e.FullPath}​​​​​​​​ {​​​​​​​​e.ChangeType}​​​​​​​​"); 

    E precisa brincar com o FyleSystemWatcher

    https://weblogs.asp.net/ashben/31773

    https://www.techcoil.com/blog/how-to-monitor-a-folder-for-new-files-from-your-c-application/

    https://coding-examples.com/csharp/monitor-file-system-via-c-filesystemwatcher/

    https://docs.microsoft.com/pt-br/dotnet/api/system.io.filesystemwatcher?view=netcore-3.1

    quarta-feira, 7 de outubro de 2020 15:29
    Moderador
  • Obrigado pessoal, pela atenção, fiz da seguinte forma:

    while (!System.IO.File.Exists(@"C:\\ESTOQUE\ARQUIVO.TXT") && nTentativas < 10)
                {
                    nTentativas++;
                    lblInicializando.Refresh();
                    this.lblInicializando.Text = "Enviando Impressão " + Convert.ToInt32(nTentativas).ToString();
                    // Aguarda um segundo
                    System.Threading.Thread.Sleep(TimeSpan.FromSeconds(1));
                }

    quinta-feira, 8 de outubro de 2020 15:43