Проблема здесь в том, что у вас есть обработка, которая происходит в потоке пользовательского интерфейса и блокирует сообщение рисования. Вызов Refresh или Invalidate не исправит это, поскольку вы все еще блокируете поток, который будет выполнять эти операции.
Скорее, вы должны взять эту обработку и переместить ее в другой поток, а затем обновить ваш поток пользовательского интерфейса (скорее всего, с помощью метода Invoke, скорее всего, чем нет), когда будете выполнять работу с фоновым потоком.