Déjà si ton action qui dure 2 secondes est effectuée dans le même thread, il ne risque pas de se passer grand chose pendant ce temps, même si l'utilisateur appuie sur entrée. Je vais donc supposer que cette action s'effectue dans un thread séparé.
Ensuite je pense que tu compliques la vie, il faut juste un booléen qui dit si l'utilisateur peut ou non appuyer sur entrée (= si la tâche qui dure deux secondes est en cours ou non), puis :
if(!actionEnCours && ToucheEntréeAppuyée())
{
faireUneActionQuiDure2s(); --> actionEnCours = true au début, actionEnCours = false à la fin
}