1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

VB.NET | Eventos ao fechar programa

Discussão em 'Programação' iniciada por diog0silva, 18 de Junho de 2009. (Respostas: 5; Visualizações: 2429)

  1. diog0silva

    diog0silva Power Member

    Boas.

    Estou a fazer um programa com login. Quando abre o form principal, o utilizador insere os dados, verifica se coincide com a base de dados, e passa o campo "estado" da tabela utilizador para "Ligado".

    Em contrapartida, quando o form principal é fechado, actualizo o estado do utilizador para "Desligado".

    O problema é que quando o programa "encrava" por causa de um erro, ele não corre o código de "desconectar o utilizador", e fica como "Ligado". Da próxima vez que for a entrar não vai conseguir, porque supostamente já está ligado.

    Não há maneira de associar eventos que corram quando o programa encerre, seja porque motivos for?

    Cumprimentos.
     
  2. PNDmartins

    PNDmartins Power Member

    Quando um programa encrava, o programa encrava..

    Podes é, quando um utilizador tenta fazer login verifica se já está ligado, se estiver indicas ao user que já está ligado e pergunta se quer fechar a sessão que está ligada. Se sim, vais a Bd e mudas o campo para desligado e depois o user ao fazer login novamente já pode entrar.
     
  3. diog0silva

    diog0silva Power Member

    Da forma que me estás a sugerir e da forma como eu tenho o código, se já existir uma sessão aberta desse utilizador, ele não vai encerrá-la, vai apenas mudar o campo "estado" para desligado. Ou seja, além da sessão que já está aberta, ele vai permitir abrir outra com o mesmo username.

    Para o problema do programa encravar, a solução que sugeriste acho que resolve bem. Mas imagina que um utilizador descobre a password de outro. Com essa solução ele vai poder iniciar uma sessão, mesmo estando o "verdadeiro" utilizador já com uma sessão aberta.
     
  4. crmh.

    crmh. Power Member

    numa forma que esteja sempre activa, colocas uma timer e no evento tick poes:
    Código:
    If form1.visible=true then
    'código para estado ligado
    else
    'codigo para estado desligado
    end if
    
     
    Última edição: 19 de Junho de 2009
  5. Thorak

    Thorak Power Member

    Pode-se colocado um código na BD ou num ficheiro de quando o último formulário da aplicação é fechado ou se fez logout. Se esse código não existir quando se inicia de novo o programa, a sessão é terminada automaticamente e é pedido o login de novo
     
  6. jota WA

    jota WA [email protected] Member

    Boas
    O programa fecha devido a um erro porque não estás a tratar os erros.Em todas as rotinas ou funções que uses coloca um Try Catch deste estilo:

    Código:
    Try
        Fazer qualquer coisa...
    Catch ex As Exception
        Msgbox "Ocorreu o seguinte erro:" & vbCrlf & ex.Message
    End Try
    O que vai acontecer é quando ocorrer um erro o programa vai emitir uma mensagem de erro mas o programa continua aberto!
    Se quiseres por outro lado obrigar o campo a ficar "Desligado" quando fechas um formulário (no form principal talvez) mete o código que usas para alterar o campo no evento FormClosed do formulário.
    Cumps
     

Partilhar esta Página