C# Windows XP中的.NET Framework 4在saveFileDialog.ShowDialog()上出现错误
我正在使用.NET Framework 4编写一个Windows窗体应用程序,它在Windows 7和8上运行得非常好,但是当我想在Windows XP中显示一个saveFileDialog时,该应用程序在显示对话框窗口3到6秒后关闭,我在两台使用Windows XP的不同计算机上测试了该应用程序,每台计算机上都出现了不同的错误!!,因此,在Windows事件日志中,我可以看到错误消息:C# Windows XP中的.NET Framework 4在saveFileDialog.ShowDialog()上出现错误,c#,.net,winforms,windows-xp,C#,.net,Winforms,Windows Xp,我正在使用.NET Framework 4编写一个Windows窗体应用程序,它在Windows 7和8上运行得非常好,但是当我想在Windows XP中显示一个saveFileDialog时,该应用程序在显示对话框窗口3到6秒后关闭,我在两台使用Windows XP的不同计算机上测试了该应用程序,每台计算机上都出现了不同的错误!!,因此,在Windows事件日志中,我可以看到错误消息: 在第一台计算机中显示的错误是:“Faulting module clr.dll”,因此在本例中,我从另一台
- 在第一台计算机中显示的错误是:“Faulting module clr.dll”,因此在本例中,我从另一台Windows XP中重写了.dll文件,但错误仍然存在
- 在第二台机器中,显示的错误是:“进程因堆栈溢出而终止”,我在应用程序中没有使用递归,只是显示对话框
private void btnExaminar_Click(object sender, EventArgs e)
{
try
{
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
txtExaminar.Text = saveFileDialog.FileName;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
有关答案,请查看[here][1],因为windows XP不支持4.0[1]:OpenFileDialog是“危险的”,因为它允许将所有shell扩展加载到进程中,这是赋予对话框与windows资源管理器相同功能所必需的。一个有缺陷的扩展可以造成相当大的损害,让它崩溃你的应用程序,因为它正在腐蚀内存是非常正常的。从把这些机器从四层楼的窗户里推出来算起,时间差不多了,你需要SysInternals的自动运行工具来诊断这个麻烦制造者。XP SP2对.NET 4.0的支持非常好。汉斯·帕桑特的评论应该变成一个答案,因为这肯定是问题所在。