【问题标题】:CrossThreadMessagingException WPF OpenFileDialogCrossThreadMessagingException WPF OpenFileDialog
【发布时间】:2014-02-06 20:36:03
【问题描述】:

我得到了这个例外:

Microsoft.VisualStudio.Debugger.Runtime.CrossThreadMessagingException 未处理 HResult=-2146232832 消息=发生异常“Microsoft.VisualStudio.Debugger.Runtime.CrossThreadMessagingException” 源=Microsoft.VisualStudio.Debugger.Runtime StackTrace:在 Microsoft.VisualStudio.Debugger.Runtime.Main.ThrowCrossThreadMessageException(字符串格式字符串) 内部异常:

当我使用这段代码时:

    public string ShowOpenFileDialog(string initialPath, string filter = null)
    {
        var dialog = new OpenFileDialog()
        {
            InitialDirectory = Directory.Exists(initialPath) ? Path.GetDirectoryName(initialPath) : String.Empty,
            FileName = File.Exists(initialPath) ? Path.GetFileName(initialPath) : String.Empty,
            Filter = filter
        };

        if (dialog.ShowDialog() == true)
        {
            return dialog.FileName;
        }

        return String.Empty;
    }

我没有明确地使用多线程,这是什么原因造成的?它在调试期间经常发生,但并非总是如此。我已经更改了大约一百万次方法签名,因为我正在传递 ref/out 参数并认为它们可能是原因。

编辑:我从 UI 线程调用它。视图中的按钮 -> ViewModel 中的命令 -> ShowOpenFileDialog。

【问题讨论】:

  • 你在哪里调用这个方法?调试器/监视窗口中是否有任何可能调用它的东西?
  • 我从 UI 线程调用它。视图中的按钮 -> ViewModel 中的命令 -> ShowOpenFileDialog。我不确定您对调试器/监视窗口的意思(VS 的某些部分我还没有完全了解)。
  • 我也遇到了一些奇怪的调试器行为,这是我在家里另一台计算机上的工作环境中没有遇到的(启动时未加载符号、未找到源等)。我现在正在尝试 VS 修复,希望它能以某种方式解决这些问题。
  • 您在哪一行得到异常?也许它的帮助确实添加了您的调用代码。
  • 我实际上将调用代码包装在 try-catch 中,但异常未处理。

标签: c# wpf debugging visual-studio-2012 openfiledialog


【解决方案1】:

虽然我仍然不确定为什么会发生这种情况,但我已经想出了如何解决我的情况。我的解决方案中有多个项目,并且配置了两个启动项目(客户端+服务器)。当我开始调试两个项目时,调试器似乎遇到了问题。所以我只是关闭了目前最不重要的项目的调试,所以只有一个项目需要调试器处理。

【讨论】:

    【解决方案2】:

    我在 Visual Studio 2012 的多个启动项目中遇到相同的问题 (CrossThreadMessagingException)。

    这个问题可以在VS 2012中解决,如果你指定一个项目为“Start without debugging”。

    有趣的是,这个问题在 Visual Studio 2013 中并不明显。

    【讨论】:

      猜你喜欢
      • 2011-01-13
      • 2011-07-18
      • 2011-12-11
      • 1970-01-01
      • 1970-01-01
      • 2019-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多