Ну, вы можете использовать Application.DoEvents
- но я не уверен, что посоветую это. Вы можете легко столкнуться с проблемами повторного входа, особенно в случае Paint
.
Похоже, что вся настоящая работа действительно должна быть выполнена в потоке пользовательского интерфейса, если вы обрабатываете событие Paint
- это правильно?
Альтернативой может быть создание Bitmap
и рисование на нем вместо использования обработчика событий Paint
. Вы можете сделать это в фоновом потоке, периодически создавая новое изображение, копируя изображение, которое вы уже нарисовали на нем, рисуя следующий слой (или что-то еще), а затем маршируя в поток пользовательского интерфейса, чтобы использовать изображение в пользовательском интерфейсе. Это оставит основной поток пользовательского интерфейса свободным для обработки событий. Вам вообще не нужно обрабатывать событие Paint
- просто есть PictureBox
, который вы используете для отображения «изображения до сих пор». Не забудьте избавиться от старых растровых изображений, когда закончите с ними, чтобы избежать проблем с памятью.