我得到了这个例外:
Microsoft.VisualStudio.Debugger.Runtime.CrossThreadMessagingException未处理HResult = -2146232832消息=发生异常'Microsoft.VisualStudio.Debugger.Runtime.CrossThreadMessagingException' 来源= Microsoft.VisualStudio.Debugger.Runtime StackTrace:在Microsoft.VisualStudio.Debugger.Runtime.Main.ThrowCrossThreadMessageException(String formatString) InnerException:
当我使用此代码时:
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。
答案 0 :(得分:3)
虽然我还不确定为什么会这样,但我已经想出了如何解决这个问题。我的解决方案中有多个项目,我已经配置了两个启动项目(客户端+服务器)。当我通过调试启动这两个项目时,调试器似乎有问题。所以我只是关闭目前最不重要的项目的调试,因此调试器只能处理一个项目。
答案 1 :(得分:1)
我在Visual Studio 2012中遇到多个启动项目的问题(CrossThreadMessagingException)。
如果您将一个项目分配为"可以在没有调试的情况下启动"这个问题可以在VS 2012中解决。
有什么兴趣,这个问题在Visual Studio 2013中并不明显。