Usuário com melhor resposta
Timeout de aplicativo

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
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 Blockprivate
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,
-
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 Blockprivate
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,
-
-
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