none
Como colocar um temporizador em um while RRS feed

  • Pergunta

  • Eu tenho um while funcionando perfeitamente, agora eu queria definir um temporizador para execução, hoje funciona assim:

    try

    {

    Select do banco, abre conexao, le os dados

    while (drdados.read())

    {

    envia email para o pessoal do banco de dados

    }

    Eu queria colocar um temporizador na execução, tipo leu os dados, ex: 30 registros, ai manda email para o primeiro, 5 segundos depois para o segundo, e assim sucessivamente.


    Melhor que dar o peixe é ensinar a pescar

    Daniel Yamaguti
    Gerente de TI

    terça-feira, 20 de março de 2012 15:05

Todas as Respostas

  • Olá Daniel,

    Para fazer uma pausa podes usar simplesmente este código:

    System.Threading.Thread.Sleep(millisecondsDelay);

    Nuno Gomes http://nunogomes.net

    • Sugerido como Resposta Murilo Kunze terça-feira, 20 de março de 2012 15:48
    terça-feira, 20 de março de 2012 15:25
  • Melhor você colocar tudo isso dentro de uma thread támbem, caso contrário seu programa ficará preso no método até tudo ser enviado a menos que você precise que tudo seja enviado para poder continuar algo.

    //EnviaEmail é o nome do seu método
    Thread t = new Thread(EnviaEmail);

    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    • Sugerido como Resposta Murilo Kunze terça-feira, 20 de março de 2012 15:48
    terça-feira, 20 de março de 2012 15:48
  • Na mão:

    Using System.Threading; // Vai precisar do Namespace
    // Declara uma Thread para evitar lentidao no sistema.
    Thread t = new Thread(EnviarEmail);
    // Inicializa o processo.
    t.Start();
    // Funcao para consultar e enviar
    public void EnviarEmail()
    {
       try
       {
          //Select do banco, abre conexao, le os dados
          while (drdados.read())
          {
             SendMail //Envia email
         
             // Dorme 5 Segundos. 
             System.Threading.Thread.Sleep(5000); 
          }
       }
       catch(Exception ex)
       {
          // TODO: Tratar o erro.	
       }
    }

    Boa Sorte!
    quarta-feira, 25 de abril de 2012 21:09
  • Conseguimos lhe ajudar em algo amigo? Se sim marque como resposta!

    É possível sim! Ponha isso na sua cabeça. É possível. "Steve Jobs"

    sexta-feira, 11 de maio de 2012 20:43
  • Eu tenho um while funcionando perfeitamente, agora eu queria definir um temporizador para execução, hoje funciona assim:

    ...

    Eu queria colocar um temporizador na execução, tipo leu os dados, ex: 30 registros, ai manda email para o primeiro, 5 segundos depois para o segundo, e assim sucessivamente.

    Mas você quer colocar um temporizador para marcar um intervalo entre o envio de um e-mail a outro, ou usar o temporazador para marcar um intervalo entre certas quantidades de registro que serão enviadas?!
    Se não for um intervalo entre cada e-mail, porque não enviar um e-mail entre cada 50 a 50 registros por exemplo?!

    E você precisa colocar isso dentro do WHILE? Por quê?

    Você poderia fazer a leitura de TUDO, após o termino do While você enviaria o que precisar, para evitar fila, aí sim envia a cada intervalo como foi respondido pelos amigos do Forum!

    O código :

    ...

    SendMail //Envia email // Dorme 5 Segundos. System.Threading.Thread.Sleep(5000);

    Irá a cada leitura de registro e envio de e-mail irá esperar 5 seg.
    Mas Threads são executadas simultaneamente a não ser que informe uma prioridade!


    É ajudando os outros que nos ajudamos...

    quinta-feira, 17 de maio de 2012 01:44