【发布时间】: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