我有一个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)
我错过了什么?
你的陈述:
对DoEvents的调用可确保在处理完成之前加载表单
据我所知,这不是真的.在处理加载事件之前,表单"绘制" - 处理(即加载)仍未完成.通过调用DoEvents确保的所有内容是当您处于长时间处理过程中时,其他消息有机会被处理.MSDN对DoEvent()的帮助将其描述为:
处理当前在消息队列中的所有Windows消息.
此外,它具体说明:
与Visual Basic 6.0不同,DoEvents方法不调用Thread.Sleep方法.
我相信在Load事件中处理您的需求可能会有风险.只是在谷歌搜索"加载中的Application.DoEvents"谈论许多人的糟糕经历.我建议您可以在Shown活动中探索处理您的要求.
| 归档时间: |
|
| 查看次数: |
6090 次 |
| 最近记录: |