【发布时间】:2010-04-27 12:28:22
【问题描述】:
我有一个 C# 应用程序,其中出现此错误:
“函数评估被禁用,因为之前的函数评估超时。您必须继续执行才能重新启用函数评估。”
我在 stackoverflow 和 msdn 上也看到了许多与此错误相关的帖子,但没有找到解决方案。大多数人说这个错误来自多线程应用程序,可以通过删除所有断点来解决。 就我而言,我的应用程序是单线程的,我也删除了所有断点,但在调试应用程序时仍然出现此错误。 当我运行应用程序时。没有调试,我的应用程序就会挂起,我必须通过 Visual Studio 停止它。 我试图找到它挂起的代码,我找到了它挂起的那一行。这是代码 sn-p :
MatchCollection matchesFound = Regex.Matches(content,
keywordPattern,
RegexOptions.Multiline);
int matchCount = matchesFound.Count;
当执行在第二行时,即当代码试图获取 Count 属性的值时,我的应用程序会挂起。我的正则表达式很好,因为我在 Expresso 中对其进行了测试,并且我确信应用程序在执行 Matches() 方法时不会被挂起。 如果我通过调试来到该行,我会收到上述错误。 有谁知道为什么会出现这个错误以及如何解决它?
我正在使用 Visual Studio 2005。
【问题讨论】:
-
我的正则表达式是动态的,基于一个文件中提到的关键字。我从文件中读取这些关键字并形成正则表达式。我已经在 Expresso 中测试了该正则表达式,它运行良好,而不会在 expresso 中挂起。另外,在调试时我发现我的应用程序。不会在 Matches() 方法处挂起。
-
我认为您应该发布一个示例正则表达式和测试字符串 - 甚至更好:整个代码的最小化 compile-n-run-n-reproducible 版本。