Публикации
Публикации  »  C#, C++

Обновление формы c# при долгих вычислениях

При выполнении каких-то долгих действий приложение обычно не обновляет форму и если нам нужно показать, что программа не зависла, а продолжает работать, необходимо в каких-то долгих промежутках программы вставить обновление (перерисовку) всех элементов на форме, либо конкретного элемента. Делается это элементарно:

statusStrip1.Refresh(); // обновление конкретного элемента на форме
this.Refresh(); // или обновление всей формы и всех ее дочерних элементов

Несмотря на то, что в описании Refresh сказано, что этот метод принудительно заставляет перерисовываться все дочерние элементы и себя, бывают ситуации, когда это не помогает и приложение все равно выглядит "зависшим", а окно не активно. В этой ситуации может помочь DoEvents:

Application.DoEvents();

DoEvents передает управление Windows-у чтобы тот выполнил обработку своих событий. Однако, нужно иметь в виду, что при этом, у пользователя будет возможность взаимодействия с программой, поэтому, если нужно чтобы пользователь ждал и ничего не нажимал в программе, нужно предусмотреть это перед началом выполнения длительного кода.

Категория: C#, C++

Комментарии к статье:

Пока комментариев нет, ваш будет первым ;)

Добавить комментарий: