我在C#中的应用程序出现问题。当我尝试在SaveFileDialog对象应用程序崩溃时调用ShowDialog。 导致崩溃的代码是在try catch块中,但是由于它强制应用程序,我无法获取堆栈跟踪。SaveFileDialog崩溃,异常代码0xc0000005
try
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.AddExtension = true;
sfd.RestoreDirectory = true;
string ext = Path.GetExtension(this.title);
sfd.Filter = "File type (" + ext + ")|*" + ext;
sfd.FileName = Program.NormalizeTitle(this.title);
DialogResult ds = sfd.ShowDialog(this);
}
catch (Exception ex)
{
MessageBox.Show("Exception: " + ex.StackTrace);
}
这是错误的描述:
Faulting application name: test.exe, version: 1.0.0.1, time stamp: 0x56585459
Faulting module name: wkscli.dll, version: 6.1.7601.17514, time stamp: 0x4ce795a7
Exception code: 0xc0000005
Fault offset: 0x00001e8f
Faulting process id: 0x%9
Faulting application start time: 0x%10
Faulting application path: %11
Faulting module path: %12
有时错误模块名称是Ntshrui.dll。
这段代码在任何其他机器上工作良好。它发生在Windows 2008 R2上.Net 2.0和4.0。 可能是什么问题?
如果你在调试器中运行你的应用程序,它究竟会失败吗? –
在这一行DialogResult ds = sfd.ShowDialog(this);但是我不能在调试器中运行,因为它在客户环境中。 – iz25
'0xc0000005'是访问冲突,即无效(本机)内存访问。可能真的是任何事情,甚至代码可能是你调用你的东西时很长时间完成执行的原因。但是,由于您在处理shell时得到它,它可能是一个不好的第三方shell扩展。您可以尝试使用[this](http://www.nirsoft.net/utils/shexview.html)等工具来停用shell扩展,并查看错误是否消失。 –