OpenFileDialog/c#在任何文件上都很慢.更好的解决方案

本文关键字:更好 解决方案 任何 文件 OpenFileDialog | 更新日期: 2023-09-27 18:02:52

我正在使用c#中的OpenFileDialog打开一个文件,我注意到它需要20-40秒来加载我的文件并清除对话框。

下面是我的示例代码:
private void btnOpen_Click(object sender, EventArgs e)
{
    if (ofdSettings.ShowDialog() == DialogResult.OK)
    {
         // do nothing
    } 
}

即使在这个有限的例子中,对话框的清除也需要20-40秒的持续时间。我选择的文件是一个只有1.36kb大的XML文件

OpenFileDialog/c#在任何文件上都很慢.更好的解决方案

我有同样的问题,openFileDialog1.ShowDialog()很慢,关闭它后需要10秒才能执行我的程序的下一行。我注意到在对话框中,我在"计算机"下有几个旧的快捷方式指向webdav url,这些url不再有效。我从windows资源管理器中删除了这些快捷方式,现在程序运行得很快了。检查你的电脑是否有网络连接快捷方式,这些快捷方式也会显示在对话框中(Windows 7的左侧面板)。试着删除它们,看看对话框是否更快。

另一个对我有帮助的选择:

OpenFileDialog ofd = new OpenFileDialog
{
...
   AutoUpgradeEnabled = false
};

有了这个选项,OpenFileDialog呈现更简单的UI,根据MSDN文章的"pre-Vista"风格。

当我想打开一个示例时,我也遇到了这个问题。Url文件与文件打开对话框。耗时0-10秒。然后我发现这与文件类型关联(*.url)有关。当我将关联从默认web浏览器更改为notepad++时,问题就消失了。但这对我来说不是解决方案,因为当有人点开一个例子。Url,默认浏览器应该打开该文件。为了解决这个问题,我添加了DereferenceLinks = false .

OpenFileDialog ofd = new OpenFileDialog
{
...
   DereferenceLinks = false
};

对我来说这个解决方案是完美的

您可以使用像ProcExp (SysInternals.com)这样的免费工具来监视您的应用程序在延迟期间所做的事情。是否正在扫描文件系统?注册表吗?网络(可能正在尝试连接到响应缓慢的网络共享)。

顺便说一句,你可以运行ProcExp.exe没有安装它从http://live.sysinternals.com/!

这是一篇老文章,但是WPF仍然缺少文件浏览对话框。当多次调用时,打开WinForm OpenFileDialog仍然会出现延迟问题。对我来说有效的解决方案是不保持对话框打开,而是在完成检索所需信息后进行处理,每次创建一个新对话框。

            OpenFileDialog fileBrowse = new OpenFileDialog
            {
                Title = MsgBoxCaptions.WinFormUploadFile,
                Filter = string.Format(MPEConstant.JsonFilter_1, MPEConstant.CalFileFormat)
            };
            Forms.DialogResult fileResult = fileBrowse.ShowDialog(parentWindow);
            if (fileResult == Forms.DialogResult.OK)
            {
                calibrationFile = fileBrowse.FileName;
            }
            fileBrowse.Dispose();