VB.NET DOEVENTS

w00*_*977 0 vb.net vb6

我有一个VB6应用程序,它在form_load中进行了大量处理.对DoEvents的调用可确保在处理完成之前加载表单.但是,这似乎不适用于VB.NET,即在下面的代码中,循环完成befoRe表单已加载,即使我已调用DOEVENTS:

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    For i = 0 To 100000
        Application.DoEvents()
        Dim Test As String = "Test"
    Next
End Sub
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

Aru*_*run 8

你的陈述:

对DoEvents的调用可确保在处理完成之前加载表单

据我所知,这不是真的.在处理加载事件之前,表单"绘制" - 处理(即加载)仍未完成.通过调用DoEvents确保的所有内容是当您处于长时间处理过程中时,其他消息有机会被处理.MSDN对DoEvent()的帮助将其描述为:

处理当前在消息队列中的所有Windows消息.

此外,它具体说明:

与Visual Basic 6.0不同,DoEvents方法不调用Thread.Sleep方法.

我相信在Load事件中处理您的需求可能会有风险.只是在谷歌搜索"加载中的Application.DoEvents"谈论许多人的糟糕经历.我建议您可以在Shown活动中探索处理您的要求.