由于先前的功能评估超时,因此功能评估被禁用

She*_*har 20 c# regex c#-2.0

我有一个C#应用程序,我收到此错误:

"由于先前的功能评估超时,功能评估被禁用.您必须继续执行以重新启用功能评估."

我在stackoverflow和msdn上看到了许多与此错误相关的帖子,但没有找到解决方案.大多数人都说这个错误来自多线程应用程序,可以通过删除所有断点来解决.在我的情况下,我的应用程序是单线程,我也删除了所有的断点,但我在调试应用程序时仍然收到此错误.当我运行应用程序时.没有调试,我的应用程序只是挂起,我必须通过visual studio停止它.我试图找到它挂起的代码,然后找到它挂起的行.这是代码片段:

MatchCollection matchesFound = Regex.Matches(content, 
                                             keywordPattern,
                                             RegexOptions.Multiline);
int matchCount = matchesFound.Count;
Run Code Online (Sandbox Code Playgroud)

当执行到达第二行时,即当代码尝试获取Count属性的值时,我的应用程序将挂起.我的正则表达式很好,因为我在Expresso中测试了它,我确信应用程序在执行Matches()方法时没有被绞死.如果我通过调试来到那一行,我会得到上面提到的错误.有谁知道为什么会出现这个错误以及如何解决它?

我正在使用Visual Studio 2005.

Ser*_*gGr 8

挂起和此错误消息的原因可能是相同的:有些东西需要花费大量时间来计算.在代码和调试器中执行此操作时.调试器没有神奇的力量来计算比你的app更快的东西.

您可以尝试使用Debug.WriteLine输出实际contentkeywordPattern.我认为很容易这两个都足够大,需要花费很长时间才能继续.

  • `Regeex.Matches()`什么也没做.`MatchCollection`内容是**lazy**计算的.它首先调用类似`Count`的东西,使它找到所有匹配.所以这里没有惊喜.我仍然认为`content`很大而`keywordPattern`很复杂.您可能需要重新考虑您的逻辑.也许有办法以更快的方式计算你需要的东西.实际上"如何有效地计算某些东西?"这里要问的问题可能比"为什么我的程序运行得这么慢?"更好. (5认同)