Я думаю, как таймер в отдельный поток засунуть? Может быть поможет?
В отдельном потоке достаточно будет цикла while