Trabalho com desenvolvimento de PDV (frente de loja) e estou implementando um leitor biométrico.
O leitor funciona para algumas funções que o operador de caixa não tem permissão. Com isso o sistema informa na tela “aguardando digital” e o supervisor com sua digital libera o acesso… até aí tudo OK.
Meu problema é que quando eu entro numa operação onde ele fica aguardando essa digital, eu tenho que ao mesmo tempo possibilitar o operador cancelar o procedimento e voltar para tela anterior… que no caso é feito através da tecla ESC
O único jeito que eu consegui fazer isso foi por meio de Thread… ou seja… vou ter uma Thread que vai ficar por conta da captura da digital, enquanto a Thread principal captura as ações que vem do teclado (das teclas digitadas).
A questão é que o método que chama a Thread que fica responsável pela captura da digital segue todo o seu fluxo, independente da Thread já ter encerrado ou não… e isso tem me dado problemas…
sei que posso usar o método join… ou seja… o método só segue seu fluxo depois que a Thread da captura da digital foi finalizada, e é de fato isso que eu quero…
mas o problema é que quando ele entra no join()… digamos que ele fica travado… ele trava minha aplicação naquele ponto… e com isso o meu addListener ( pra pegar a ação do teclado) se torna inútil… porque ele fica preso nesse join();
preciso de fazer com que meu código não fique preso há nenhum método, pra que quando o operador apertar ESC, ele possa entender essa ação do teclado e fazer o que tem que fazer
e ao mesmo tempo tenho aguardar a Thread que aguarda a digital finalizar… pra que meu código possa seguir seu fluxo…