Win7上的VB.NET OpenFileDialog延迟

时间:2010-09-26 00:54:05

标签: vb.net winforms visual-studio-2008

我有一个winform,VBExpress 2008只有一个按钮,后面有这个代码来说明问题:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)  Handles Button1.Click
OpenFileDialog1.ShowDialog()
MsgBox(OpenFileDialog1.FileName)
End Sub

当我选择一个文件(在我的情况下是小PDF)时,我选择文件后会有3到6秒的延迟,直到它继续下一个语句,在这种情况下是一个MsgBox。

如果我第二次重复选择同一个文件,我不会得到延迟。但是,如果我退出程序并重新启动它,那么我会再次得到延迟(一次)。在第一个挂起后,看起来它会挂起大约7到9次尝试并且窗口显示“没有响应”几秒钟。我在Vista或XP上没有这个问题。

如果我反复选择同一个文件,它可能会挂起第1次,第2次和第12次。关闭程序再试一次,这可能是第1次,第3次和第9次。从来没有 - 就像资源不足和清理缓存一样。

我在延迟期间看过任务经理,看不到任何不寻常的事情。我有一台新电脑,一切正常。我想也许这是我的诺顿网络安全 - 但我把它关闭了,它没有任何区别。

任何人都可以告诉我可能发生的事情和/或我如何跟踪延迟的来源到底部吗?我已经尝试了所有我知道的东西来隔离问题并且我的想法已经用完了。我没有看到关于这件事的任何其他帖子。

2 个答案:

答案 0 :(得分:1)

Project + Properties,Debug选项卡,勾选“启用非托管代码调试”。运行程序并在VS中选择“输出”窗口。打开对话框。您在“输出”窗口中看到的是一大堆非托管DLL加载到您的进程中。

这些是安装在您计算机上的shell扩展处理程序。坏的可能会以不愉快的方式影响您的程序,就像您在问题中描述的那样。使用SysInternals的AutoRuns实用程序来控制它。首先禁用那些不是由Microsoft制作的。

答案 1 :(得分:1)

在MSDN上建议我 - 删除网络电缆,看看问题是否消失。它确实。

我有两个网络连接到我的旧电脑,它已断电。删除了那些,它解决了问题。

那么,现在的问题是在vb.net winforms中,如何自定义Win7 OpenFileDialog框(标准win资源管理器框)不显示或被休眠网络位置延迟?或者,你如何在Win7中防止这种情况。我将研究并在必要时单独重新发布。

我真的不想发布我的应用程序,并警告说如果你在Win7上并且有休眠网络位置,那么在选择文件时你会遇到延迟。