什么相当于.NET中的VB6的DoEvents?
编辑:
我有一个Sub需要很长时间才能完成它的工作.(它有一个do-while)当我打电话给它时,表格会变成白色.在VB6中,我曾经在方法中放置一个DoEvents(在do-while内部)以防止这种情况发生.
Jon*_*n B 27
很少(如果有的话)DoEvents是.NET中正确的解决方案.如果您发布一些关于您正在做的事情,我们可能会对替代方案提出一些建议.
为了响应您的编辑,您需要做的是创建BackgroundWorker.这将使您的主(GUI)线程保持自由,允许它重新绘制并正常运行.网上有很多教程,包括这个.
Jef*_*tes 18
Application.DoEvents()应该是您正在寻找的.
但是,请注意以下内容(来自链接的MSDN页面):
与Visual Basic 6.0不同,DoEvents方法不调用Thread.Sleep方法.
鉴于问题现在提供了使用说明,我会说重构使用后台线程将是一个更好的解决方案.DoEvents可能会导致一些问题,因为它会导致底层消息队列被泵出,这可能导致重新入侵和一系列其他副作用.DoEvents有有效的用例,我会羞于说它的使用是不好的做法 - 它存在是有正当理由的 - 但在大多数情况下,除了调用DoEvents之外还有更好的解决方案.