【发布时间】:2015-09-16 08:44:01
【问题描述】:
在WinForms 应用程序中借助SaveFileDialog 保存xml 文件时,我收到Stackoverflow 异常。代码没什么特别的:
DialogResult result = saveFileDialog.ShowDialog();
if (result == DialogResult.OK)
{
txtOutputFile.Text = saveFileDialog.FileName;
// do something
}
它在ShowDialog() 中立即失败。
只有在输入文件名后在对话框中按 Enter 时才会收到它。如果我用鼠标按保存,一切正常。
我在 Windows 7 机器上收到此异常,在 Windows 10 上尝试过 - 一切正常。有什么想法吗?
更新:很抱歉,我现在无法在我使用了几天的机器上重现此问题(在同一个程序中,没有任何相关更改)。
【问题讨论】:
-
这段代码在哪里?你能在一个简短但完整的程序中重现这个吗?
-
我会尝试提取相关代码并更新我的帖子
-
什么时候显示对话框?在事件处理程序中?如果是,事件是什么?异常的堆栈跟踪是什么?
-
我在browseButton_Click中显示它,用户按下...按钮并显示对话框。稍后也会发布堆栈跟踪
-
您的程序将受到外壳扩展。当您使用 OpenFileDialog 和 SaveFileDialog 等 shell 对话框时加载到您的进程中的 DLL。如果你有一个很糟糕的代码注入,它当然可以注入一个 SOE 并终止进程。当您启用非托管代码调试时,您可以看到它们正在加载。使用 SysInternals 的 AutoRuns 清理您的机器。
标签: c# winforms savefiledialog