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