经过几个月的不活动,我决定再次使用Microsoft Visual Studio(C#)。
点击“开始调试”后我得到了Windows错误(我认为svchost.exe已停止工作)我不知道这是否与我要说的相关,但我没有得到任何错误,例如我正在调用数组越界。
该程序只是不执行与错误相关的代码(我注意到数组和文件I / O问题)但继续正常运行这让我发疯,因为我必须点击“开始调试”之后我写每行代码只是为了确保我是正确的。
所以,Debug>例外,那里的混乱,我以前没有触及它。 任何帮助将不胜感激。
编辑:我已经重新启动了3次我的计算机,刚刚完成了清理和重建(项目),没有任何改变。
EDIT2:对不起,如果它令人困惑,这里有一些新信息:
public partial class frmMain : Form
{
PictureBox[] pic = new PictureBox[120];
public frmMain()
{
InitializeComponent();
}
private void frmMain_Load(object sender, EventArgs e)
{
// Creating pictureboxes
for (int i = 1; i <= 199; i++) //199 instead of 120 or 119 and the rest of the for isn't executed plus no error or warning displayed.
{
pic[i] = new PictureBox();
EDIT3:下面是另一个例子。如果我尝试在没有try-catch序列的情况下读取不存在的文件,那么整个pic []矩阵就像在程序运行时从内存中卸载一样。
pic[i].Image = Image.FromFile("H:\\My Pictures\\" + i + ".jpg");
EDIT4:谢谢你的时间。我尝试了“Release”而不是“Debug”,问题已经修复了一段时间。
当我决定在“OutofRangeException”上按“Continue”而不是“Break”时,Windows会弹出以下消息:“Windows必须在兼容模式下运行该程序”。现在,当我按下“开始调试”时,它就像之前一样......
答案 0 :(得分:0)
你在Windows / .Net / C#/ Wow64中遇到了一个已知的错误,当Form.Load事件处理程序抛出异常时会发生这种错误。
来自Hans Passant's回答:
这是Windows wow64仿真层引发的一个令人讨厌的问题 允许32位代码在64位版本的Windows上运行。它 吞下触发Load事件的代码中的异常。 防止调试器看到它并踩到它。这是 显然很难解决,微软的Windows和DevDiv团队 来回指尖。 DevDiv无能为力, Windows认为这是正确的行为,就像那样神秘 声音。附加调试器只是一个问题,你的代码会 像往常一样没有一个炸弹。
答案 1 :(得分:0)
听起来你可能正在处理这个问题:
Something swallowing up unhandled exceptions?
基本上,在64位计算机上构建时,有时会吞下异常。
我相信可能有一个修补程序,如下所述:
以下是修补程序:http://support.microsoft.com/kb/976038
否则,尝试将目标构建设置为x86而不是x64或&#34;任何CPU&#34;。还可以尝试在发布模式下运行,看看是否发生异常。
如果这不是问题,那么您可能需要重新安装Visual Studio。如果您正在使用Visual Studio Express,为什么不升级到比2008更新的版本?
编辑:
此外,尝试将所有服务包和修补程序应用于操作系统。如果您使用的是Windows 7,那么您肯定应该使用SP1。您还应该确保使用的是Visual Studio 2008 SP1和所有修补程序。