Domanda: è proprio necessario il ciclo infinito? Non si potrebbe per esempio, riadattare con l'utilizzo di un qualche listener? Altra domanda: il tuo programma è multi-thread? Perché se non fosse così, a parte il pericolo di intasare la CPU, ti troveresti con un programma le cui altre eventuali funzioni non verranno mai eseguite...