【问题标题】:.NET FolderBrowserDialog freezes when selecting "This Computer"/"My Computer".NET FolderBrowserDialog 在选择“这台电脑”/“我的电脑”时冻结
【发布时间】:2014-06-25 19:04:04
【问题描述】:

我想先说这不会发生在所有计算机上(在 Windows 7、Windows 8、Windows 8.1 中测试)——只是我的开发机器,无论我是否处于调试或发布模式,无论是否不是我用完了 Visual Studio,或者正在运行可执行文件。我怀疑这不是一个常见问题,不仅因为它似乎不会在其他人的机器上崩溃,而且还因为在论坛中报告此问题的在线人员很少。

这是一个 WPF MVVM 应用程序,使用 .NET Framework 4.5 在 Visual Studio 2012 中用 VB.NET 编写。该应用程序的架构是对Josh Smith's MVVM demo 的定制。

在这个应用程序中,我需要用户能够在一个地方选择一个文件,而在其他三个地方,他们需要能够选择一个文件夹。对于单个文件,我使用 Microsoft.Win32.OpenFileDialog,但对于文件夹选择器,我使用 System.Windows.Forms.FolderBrowserDialog 的三个实例。

现在,似乎只在我的机器上发生的行为(Windows 8.1 64 位操作系统)。当我打开默认为桌面的 FolderBrowserDialog 时,作为第一个操作,我可以选择作为桌面及其子文件夹的任何文件夹。然而,当我选择“这台电脑”(或旧世界的我的电脑)时,对话框一侧的滚动条出现,用户界面似乎会自行调整以显示所有驱动器等,但它挂起。应用程序中的任何内容都不可点击,我必须在运行 exe 时停止在 IDE 或任务管理器 -> 结束任务中执行。

更奇怪的是,如果我首先打开 OpenFileDialog,然后选择三个 FolderBrowserDialogs 中的任何一个,它的行为就完全正确。

在这个应用程序中有一些后台线程的情况,但在添加之前,我遇到了这个问题。我什至通过确保它在 Sta Thread 上运行来实现 what was suggested,但没有运气。

现在终于是代码了:

    Private Function GetSelectedFolder() As String
        Dim returnValue As String = String.Empty
        Using dialog As New FolderBrowserDialog()
            Dim result As DialogResult = dialog.ShowDialog()
            If result = DialogResult.OK Then
                returnValue = dialog.SelectedPath
            End If
        End Using
        Return returnValue
    End Function

我对这个很困惑。任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 您等了多长时间才可能超时?我知道某些事情的超时时间(例如尝试打开 UNC 路径)可能会非常长。有时好像几分钟。当然,您始终可以尝试非编程方式来解决此问题 - 禁用驱动程序、Windows 启动时加载的程序、您的网络适配器等,然后查看问题是否消失。开发者机器往往有很多废话。
  • 我点击了“这台电脑”,走了 15 分钟,没有走运。我将尝试禁用所有内容并运行并让您知道它是否有效。谢谢!

标签: .net wpf vb.net mvvm


【解决方案1】:

我将 .NET 框架更改为目标 3.5,这解决了我的问题。

【讨论】:

    猜你喜欢
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-08
    • 1970-01-01
    相关资源
    最近更新 更多