首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CrossThreadMessagingException WPF OpenFileDialog

CrossThreadMessagingException WPF OpenFileDialog
EN

Stack Overflow用户
提问于 2014-02-06 20:36:03
回答 2查看 500关注 0票数 1

我明白这一例外:

Microsoft.VisualStudio.Debugger.Runtime.CrossThreadMessagingException未得到处理,HResult=-2146232832 Message=An异常发生了Source=Microsoft.VisualStudio.Debugger.Runtime StackTrace: at Microsoft.VisualStudio.Debugger.Runtime.Main.ThrowCrossThreadMessageException(String formatString) InnerException:

当我使用这个代码时:

代码语言:javascript
运行
复制
    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中查看->命令。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-10 13:12:39

虽然我还不知道为什么会发生这种情况,但我已经想出了解决问题的方法。我的解决方案中有多个项目,我已经配置了两个启动项目(客户机+服务器)。当我用调试启动两个项目时,调试器似乎在这方面有问题。因此,我只是关闭了项目的调试,这是最不重要的,所以只有一个项目需要调试器处理。

票数 3
EN

Stack Overflow用户

发布于 2015-04-16 16:04:06

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

如果您将一个项目指定为“开始而不调试”,这个问题可以在VS 2012中解决。

令人感兴趣的是,这个问题在Visual 2013中并不明显。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21613505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档