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

ffscu2ro  于 2023-06-24  发布在  C#
关注(0)|答案(5)|浏览(377)

我正在使用C#中的OpenFileDialog打开一个文件,我注意到加载文件并清除对话框需要20-40秒。
下面是我的示例代码:

private void btnOpen_Click(object sender, EventArgs e)
{
    if (ofdSettings.ShowDialog() == DialogResult.OK)
    {
         // do nothing
    } 
}

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

iecba09b

iecba09b1#

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

sqyvllje

sqyvllje2#

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

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

使用此选项,OpenFileDialog呈现更简单的UI,根据MSDN article的“pre-Vista”风格。

rqcrx0a6

rqcrx0a63#

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

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

对我来说,这个解决方案工作完美

brc7rcf0

brc7rcf04#

您可以使用免费工具,如ProcExp(SysInternals.com)来监视应用程序在滞后期间的操作。它正在扫描文件系统吗?登记处?网络(可能是它正在尝试连接到响应缓慢的网络共享)。
顺便说一句,你可以运行ProcExp.exe而不需要从http://live.sysinternals.com/安装它!

ghhkc1vu

ghhkc1vu5#

这是一个老帖子,但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();

相关问题