My.Application.DoEvents 方法

更新:2007 年 11 月

处理当前位于消息队列中的所有 Windows 消息。

' Usage
My.Application.DoEvents()
' Declaration
Public Sub DoEvents()

备注

My.Application.DoEvents 方法允许应用程序处理代码运行时可能引发的其他事件。My.Application.DoEvents 方法的行为与 DoEvents 方法的相同。

当您运行 Windows 窗体应用程序时,它将创建一个新窗体,该窗体等待要处理的事件。该窗体每次处理某个事件(如单击按钮)时,会处理与该事件关联的所有代码。所有其他事件将在队列中等待。当代码处理事件时,应用程序不会响应。例如,如果将甲窗口拖到乙窗口之上,则乙窗口不会重新绘制。

如果在代码中调用 My.Application.DoEvents,应用程序将可处理其他事件。例如,如果代码在一个循环中将数据添加到 ListBox,并且在该循环的每一步之后调用 My.Application.DoEvents,则当其他窗口被拖到您的窗体之上时,该窗体将重新绘制。如果从代码中移除 My.Application.DoEvents,则在按钮的单击事件处理程序执行完毕前,您的窗体不会重新绘制。

通常,您在循环中使用此方法来处理消息。

说明:

My.Application.DoEvents 方法不会按与窗体完全相同的方式来处理事件。多线程处理可以使窗体直接处理事件。有关更多信息,请参见多线程处理 (Visual Basic)

警告:

如果某个处理用户界面 (UI) 事件的方法调用了 My.Application.DoEvents 方法,这个方法在完成之前可能会被重新输入。这是因为 My.Application.DoEvents 方法将处理 Windows 消息,而 Windows 消息可能会引发事件。

任务

下表列出了涉及 My.Application.DoEvents 方法的任务的示例。

要执行的操作

请参见

允许窗体在忙时响应 UI 输入

演练:处理事件

示例

此示例使用 My.Application.DoEvents 方法,以使 TextBox1 的 UI 可以更新。

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 控件库

Web 控件库

Windows 服务

网站

权限

以下权限可能是必需的:

权限

说明

FileIOPermission

控制访问文件和文件夹的能力。关联的枚举:Unrestricted

UIPermission

控制与用户界面和剪贴板相关的权限。关联的枚举:AllWindows

有关更多信息,请参见代码访问安全性请求权限

请参见

参考

My.Application 对象

WindowsFormsApplicationBase.DoEvents

DoEvents