none
Timeout de aplicativo RRS feed

  • Pergunta

  • Pessoal,

     

       Estou tendo um certa dificuldade em gerar um timeout para minha aplicação, o caso é o seguinte: tenho um aplicativo em vb.net simples que tem 4 telas de cadastro e coleta dados de um usuário e se o usuário demorar mais que 2 minutos sem nenhuma ação em qualquer tela eu precisava fechar aquela tela e voltar para a tela principal do aplicativo.

       Alguém tem alguma sugestão ? Já tentei o timer e thread e não estou conseguindo..

     

    Abraços,

     

    Herbert Giacomini

      

    quinta-feira, 1 de novembro de 2007 11:58

Respostas

  • Herbert,

     

    Você pode usar o Timer, mas tem que criar uma variável para controlar o estado da aplicação. Faça assim então:

    • crie uma variável bool na classe do form;
      • bool SistemaParado = false;
      • ajuste a propriedade KeyPreview do form para true;
    • no evento MouseMove e KeyPress coloque a variável SistemaParado = false;
    • crie o timer com o tempo que deseja e verifique se a variável SistemaParado está true, se estiver significa que o tempo passou e o mouse ou o teclado tiveram ação;

    Veja o código:

    Code Block

    private void timer1_Tick(object sender, EventArgs e)

    {

       if (SistemaParado)

       {

       this.Close();

       }

       SistemaParado = true;

    }

    private void Form1_KeyPress(object sender, KeyPressEventArgs e)

    {

       SistemaParado = false;

    }

    private void Form1_MouseMove(object sender, MouseEventArgs e)

    {

       SistemaParado = false;

    }

     

     

     

     

     

    []s,

     

    sábado, 3 de novembro de 2007 19:22

Todas as Respostas

  • Herbert,

     

    Você pode usar o Timer, mas tem que criar uma variável para controlar o estado da aplicação. Faça assim então:

    • crie uma variável bool na classe do form;
      • bool SistemaParado = false;
      • ajuste a propriedade KeyPreview do form para true;
    • no evento MouseMove e KeyPress coloque a variável SistemaParado = false;
    • crie o timer com o tempo que deseja e verifique se a variável SistemaParado está true, se estiver significa que o tempo passou e o mouse ou o teclado tiveram ação;

    Veja o código:

    Code Block

    private void timer1_Tick(object sender, EventArgs e)

    {

       if (SistemaParado)

       {

       this.Close();

       }

       SistemaParado = true;

    }

    private void Form1_KeyPress(object sender, KeyPressEventArgs e)

    {

       SistemaParado = false;

    }

    private void Form1_MouseMove(object sender, MouseEventArgs e)

    {

       SistemaParado = false;

    }

     

     

     

     

     

    []s,

     

    sábado, 3 de novembro de 2007 19:22
  • Carlos,

     

    Valeu pela dica, com o que você sugeriu consegui fazer um pouco diferente, criei uma variável do tipo Date, nos principais controles da página eu atribuo o date.now a ela e no tick do timer eu verifico se a diferença entre ela e o tempo atual é maior que o tempo que eu defini para aplicação, se for eu feco o form.

     

     

    Abs,

     

    Herbert

    quarta-feira, 7 de novembro de 2007 00:21