Метод My.Application.DoEvents
Обновлен: Ноябрь 2007
Обрабатывает все сообщения Windows, которые в данный момент находятся в очереди сообщений.
' Usage
My.Application.DoEvents()
' Declaration
Public Sub DoEvents()
Заметки
Метод My.Application.DoEvents позволяет приложению обрабатывать другие события, которые могут возникнуть при выполнии кода. Метод My.Application.DoEvents выполняет те же действия, что и метод DoEvents.
При запуске приложения Windows Forms оно создает новую форму, которая затем ожидает события для обработки. Каждый раз форма обрабатывает событие, такое как нажатие кнопки, и обрабатывая весь код, связанный с событием. Все остальные события ожидают в очереди. Пока код обрабатывает событие, приложение не отвечает. Например, окно не будет перерисовываться, если поверх него перетащить другое окно.
Если в коде вызывается My.Application.DoEvents, приложение может обрабатывать другие события. Например, если код добавляет данные в ListBox в цикле, после выполнения каждого шага цикла он вызывает My.Application.DoEvents для перерисовки формы, когда другое окно перетаскивается над ним. Если из кода удалить My.Application.DoEvents, форма не будет перерисовываться, пока обработчик событий нажатия кнопки не завершит выполнение.
Обычно данный метод используется в цикле для обработки сообщений.
Примечание. |
---|
Метод My.Application.DoEvents обрабатывает события иначе,чем это делает форма. Используйте многопоточность, чтобы сделать форму непосредственным обработчиком событий. Дополнительные сведения см. в разделе Многопотоковость в Visual Basic. |
Внимание! |
---|
Если метод, обрабатывающий событие пользовательского интерфейса, вызывает метод My.Application.DoEvents, то в этот метод может быть осуществлен повторный вход до его завершения. Это может произойти, поскольку метод My.Application.DoEvents обрабатывает сообщения Windows, а сообщения Windows могут порождать события. |
Задачи
В приведенной далее таблице содержатся примеры задач, в которых используется метод My.Application.DoEvents.
To |
См. в разделах |
---|---|
Разрешить форме ответить на ввод пользовательского интерфейса в состоянии занятости |
Пример
В этом примере используется метод My.Application.DoEvents для разрешения обновления пользовательского интерфейса TextBox1.
Private Sub TestDoEvents()
For i As Integer = 0 To 10000
TextBox1.Text = i.ToString
My.Application.DoEvents()
Next
End Sub
Этот код должен быть в форме, которая содержит компонент TextBox1 со свойством Text.
Требования
Пространство имен:Microsoft.VisualBasic.ApplicationServices
Класс:WindowsFormsApplicationBase
Сборка: библиотека времени выполнения Visual Basic (в Microsoft.VisualBasic.dll)
Доступность по типу проекта
Тип проекта |
Доступно |
---|---|
Приложение Windows |
Да |
Библиотека классов |
Нет |
Консольное приложение |
Нет |
Библиотека элементов управления Windows |
Нет |
Библиотека веб-элементов управления |
Нет |
Служба Windows |
Нет |
Веб-узел |
Нет |
Разрешения
Могут потребоваться следующие разрешения.
Разрешение |
Описание |
---|---|
Определяет возможность доступа к файлам и папкам. Связанное перечисление: Unrestricted. |
|
Управляет разрешениями, относящимися к пользовательским интерфейсам и буферу обмена. Связанное перечисление: AllWindows. |
Дополнительные сведения см. в разделах Управление доступом для кода и Запрос разрешений.