Visual Studio和进程在异常发生时冻结(我认为)C#

Visual Studio和进程在异常发生时冻结(我认为)C#,c#,visual-studio-2010,visual-studio,C#,Visual Studio 2010,Visual Studio,我正在使用Windows窗体和Visual Studio 2010 Professional编写一个C#应用程序。这台机器使用的是Windows 7 Enterprise,它是32位的。虽然我认为这不相关,但我正在虚拟机上工作(使用远程桌面连接) 问题是,当在窗体的Load方法中生成异常时,VS和程序冻结/挂起(实际上,我甚至不能显示文件夹或转到桌面),当我终止正在调试的应用程序的进程时,它就会停止 这在调试模式(F5)下发生,而不是在非调试模式(ctrl+F5)下发生。我对此搜索了很多,这是x

我正在使用Windows窗体和Visual Studio 2010 Professional编写一个C#应用程序。这台机器使用的是Windows 7 Enterprise,它是32位的。虽然我认为这不相关,但我正在虚拟机上工作(使用远程桌面连接)

问题是,当在窗体的Load方法中生成异常时,VS和程序冻结/挂起(实际上,我甚至不能显示文件夹或转到桌面),当我终止正在调试的应用程序的进程时,它就会停止

这在调试模式(F5)下发生,而不是在非调试模式(ctrl+F5)下发生。我对此搜索了很多,这是x64机器的一个已知问题。这就是为什么我发现它真的很奇怪,就像很多人报道的64位计算机一样,但是在x86体系结构中

到目前为止,除了Load函数外,我还可以在另一个函数中运行我想要调试的代码,但将来可能会出现问题

提前感谢您的任何意见

------------------------------编辑---------------------------------------------


我只是注意到,我甚至不能在Load方法中使用断点进行调试(而不是显示断点,它只是挂起…)。以前没有人有过这个问题/

安装Microsoft Windows调试工具:


将此工具连接到VS并产生错误,该工具在异常时间创建程序的转储/快照,您可以使用此工具获取有关应用程序运行状况的所有信息,它不容易使用,但会对您有很大帮助。

伙计们,找出问题所在

问题在于,我将表单的“最顶端”属性设置为true。奇怪的是,当一个异常发生时,我甚至不能最小化我的应用程序,这模拟了一个挂起的情况,而发生的只是我的表单在等待VS的答复(它显示了异常,但它是可见的)。由于采用“加载”方法,表单保持冻结状态,因此我别无选择,只能杀死它

谢谢你的建议,我想最后我错了,这真的是在代码上:)(尽管我仍然认为一些奇怪的事情正在发生,因为我甚至不能最小化我的应用程序)


(您可以关闭此线程或在某些问题确定解决后执行的任何操作:p)

每个人都会这样说:让我们看看一些代码。我不确定代码是否真的与此相关,也可能是系统设置问题。1.了解这是否发生在任何和所有异常情况下(即,如果一个简单的程序
static void Main(){throw new NotImplementedException();}
表现出相同的行为,或者只是OP的非常特定的异常/程序。2.你能在x86硬件上偶然设置x64虚拟机吗…?@stakx,似乎这个问题可能是代码问题(无限循环、错误代码等)或者是一个环境问题。如果没有证据证明其中一个是真的很难判断。@gunr217:如果OP的评估是正确的,并且问题是由异常引起的,那么我们就不是在处理无限循环。你可能在代码中看到的只是它以某种方式抛出异常。但我看不出“坏代码”有多严重可能会影响Visual Studio(另一个进程!),因为操作系统应该隔离进程。--我更愿意多了解一些VM设置:在进程崩溃前后释放HDD空间、内存等。这可能会进一步提示问题所在。@gunr2171:…但当然看到代码不会有什么坏处。我只是怀疑了解更多关于环境可能更重要。最好有人拿起电话。因为我打电话了!@gunr2171-Heheh不完全是,但在某种程度上你是对的:)。我想,即使我发布了代码,也没有人会找到最顶层的属性,而且因为它在自动生成的代码中。无论如何,这种行为正常吗?难道我不应该,至少,最小化我的应用程序吗?是的,你是对的,虽然我最初的想法是“正确的”,但你说得对,很难确定错误的来源。至于预期的行为,我不确定。VisualStudio托管一个exe,它反过来在不同的线程上运行代码。过去我还没有做过实验。好吧,在做了一个快速的实验之后,看起来当你把一个窗体设置为“最上面的”时,窗口实际上是最上面的,即使在断点期间也是如此。这一定是因为您在Windows中注册了表单(在后台),并且表单在技术上仍然处于活动状态(尽管已暂停)。所以,是的,是设计出来的。@gunr217也感谢您的测试。我想这个答案(我的)应该被标记为最佳,考虑到很多其他人可以发现这个问题,并花一段时间来找出它来自“最高”属性,就像我所做的那样。让我抓狂的是,这几乎完美地模拟了64位机器中“加载”方法期间异常的行为。因为我的是32位。。我想这怎么可能就发生在我身上!?!很高兴问题解决了,谢谢大家!