我得到这个异常:CrossThreadMessagingException WPF打开文件对话框
Microsoft.VisualStudio.Debugger.Runtime.CrossThreadMessagingException是未处理的HResult = -2146232832消息=例外 'Microsoft.VisualStudio.Debugger.Runtime.CrossThreadMessagingException' 发生 来源= Microsoft.VisualStudio.Debugger.Runtime 堆栈跟踪:在Microsoft.VisualStudio.Debugger.Runtime.Main.ThrowCrossThreadMessageException(字符串formatString的) 的InnerException:
W¯¯母鸡我用这个代码:
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。
你在哪里调用这个方法?在调试器/监视窗口中是否有可能调用它的内容? – Matt
我从UI线程调用它。按钮在视图 - >命令在ViewModel - > ShowOpenFileDialog。我不确定你的意思是关于调试器/监视窗口(有些VS我还没有学过)。 –
我也遇到过一些奇怪的调试器行为,我没有在我的工作环境中在家中的其他计算机上遇到(符号未在启动时加载,未找到源等)。我正在尝试修复VS,希望它能以某种方式解决这些问题。 –