使用键盘时,在Visual Studio 2010中调试Silverlight会导致程序冻结。

9
首先,我想先解决一些可能会有的“等一下”问题。
  • 是的,我已经阅读了SO和其他网站上所有标题和主题类似的帖子。
  • 是的,我正在使用最新版本的SP1以及可能与此问题相关的任何潜在热修复程序。
所以,具体来说,这是我的问题:
当我调试Silverlight应用程序并且它遇到断点时,只要我使用鼠标,一切都很好。只要我使用鼠标,我就可以继续、跳过、停止调试、禁用和启用断点,所有操作都没问题。
但是当我使用键盘时,Visual Studio会冻结几秒钟,有时甚至超过一分钟。这是任何键盘使用情况。但是不久之后,它开始正常工作,直到该调试会话结束。但是下一个调试会话(无论我是否使用相同的Casini实例)都会完全相同。
当我说任何键盘使用,我的意思是任何键盘使用。F5(继续)、Shift-F5(停止调试)、F10(步入)、在立即窗口中输入或者甚至按下ALT键以突出显示菜单。
例如,如果我尝试在立即窗口中键入某些内容,它会冻结约15秒钟,然后显示第一个键并重复该模式约5次,直到它释放并且一切都正常。
当我说“冻结”时,我的意思不仅是Visual Studio,而且还会挂起整个操作系统,除了我移动鼠标的能力。即使如此,鼠标指针仍然保持冻结时的状态,无论它悬停在哪个程序上,例如文本选择器。
这只发生在Silverlight中,无论我使用哪个版本都没有关系。
以下是我的运行情况:
  • Windows 7 Professional 64位,包括所有最新更新,12 GB RAM和1.5 TB硬盘。
  • Visual Studio 2010 Ultimate,包括所有最新更新。
所有软件都是合法的,我已经尝试过删除或禁用几乎可以删除或禁用的所有内容,包括扩展。我使用来自Sysinternals的Process Explorer杀死或停止了我能找到的所有东西。我还尝试过在一个非常简单的Silverlight应用程序上进行测试,其中仅有一行代码,不访问任何内容。
编辑:忘记提到我也没有加载超出它通常会加载的“Just My Code”符号,并且我也尝试了我能想到的所有调试设置。Intellitrace也被关闭了(因为我确实拥有Ultimate),但也没有任何区别。
更新(11/18):情况变得越来越奇怪。我确定临时冻结不仅发生在Visual Studio有焦点的时候。当VS(在超级简单的Silverlight应用程序中)进入调试模式时,任何键盘访问都会导致相同的效果。因此,它似乎必须(至少在某种程度上)与我的Windows设置有关,这与我在评论中的说法相反,但我无法想象如何做到这一点。如果其他程序在冻结时正在执行某些操作,则延迟时间更长(这在症状上具有一定的意义)。我仍然完全不知所措。

有人有什么想法或以前见过这种情况吗?这真的很令人沮丧。


不应该与64位有关,因为VS或Silverlight都不在x64模式下运行。如果只是创建一个新的Silverlight项目并在App.xaml.cs初始化事件中设置断点,它会冻结吗? - Bryant
我也曾经遇到过这些问题。后来我换了一台新笔记本电脑,问题就解决了。我认为这是你的Windows安装问题,而不是你的Visual Studio或Silverlight安装问题。 - bperreault
Bryant: 是的,我试过了。(它在编辑上面的那一行) - Chris E
BPerrault: 我不明白这可能是我的Windows安装的问题。它还不到一个月,硬件和软件都没有任何异常。而且它也是100%一致的。 - Chris E
2个回答

16

我解决了这个问题。

原来是LastPass工具栏造成的。它非常方便,我已经使用了多年而没有任何问题。是的,工具栏很邪恶,我知道。 :)

在IE中禁用它完全解决了问题。我仍然可以在FF中使用它(除了工作之外,我的主要浏览器就是FF),一切正常。

即便如此,对我来说很奇怪的是,只有当SL调试时才会出现工具栏的影响。我在ASP.Net调试时没有问题,在SL应用程序实际运行时也没有任何问题,只有当我在前15秒内触发断点并按下键时才会出现问题。

无论如何,问题已解决,感谢您的建议。


我也有完全相同的问题。在阅读了你的帖子之前,这让我疯狂。现在一切都好了。非常感谢! - Kilhoffer
@Kilhoffer 很高兴我的经验能够帮到你。具有讽刺意味的是,它仍然支持工具栏是邪恶的想法。但我喜欢Lastpass足够在其他浏览器上继续使用它。 - Chris E
您真是我的英雄。您刚刚从疯狂中拯救了我。 - Nikos Tsokos

1
尝试将注册表设置LowLevelHooksTimeout从5000更改为较低的值,例如300。它可以在

处找到。
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Policies\Microsoft\Windows\Control Panel\Desktop 

或者

HKEY_CURRENT_USER\Control Panel\Desktop

(首先,在策略键上的设置似乎会全局覆盖用户设置。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接