为什么这个程序需要MsgBox?

时间:2009-12-15 18:13:33

标签: vb.net winapi msgbox

长话短说:我正在尝试编写一个将IE历史记录转储到文本文件的应用程序。因为我很懒,所以我去寻找一个预先存在的图书馆,发现这个美丽的项目来自:http://www.freevbcode.com/ShowCode.asp?ID=6702。只是,我被卡住了......

我终于得到了转储历史记录的程序,但如果我在 Module1.vb 的第169行放置MsgBox()只能。我试过把Thread.Sleep()放在那里,但那不起作用。那里必须有一个消息框,或者只列出今天的历史记录。

我的猜测,因为这是与wininet.dll交谈,这是一个并发的事情。 Thread.Sleep()(对于For ... Next循环)停止程序监听;没有什么能让它在分配值之前退出循环,但是MsgBox()恰到好处。除了MsgBox()之外还有什么东西会产生相同的效果吗?我不想三十次打OK以使程序正常工作。

这是我的分支/版本/衍生作品:http://profnano.org/andy/misc/img/HistList.zip;这是一个VS.NET2003项目。

1 个答案:

答案 0 :(得分:5)

MsgBox()抽取一个消息循环。这可以让所有类型的代码解开。 Windows有机会自己画画。由于主线程陷入循环而导致的COM死锁被解决,当涉及IE时总是一个问题。调用DoEvents()是MsgBox()的非常不完美的替代方法。