c# - 函数求值被禁用,因为之前的函数求值超时

标签 c# regex c#-2.0

我有一个 C# 应用程序,我在其中遇到此错误:

“函数评估已禁用,因为之前的函数评估超时。您必须继续执行才能重新启用函数评估。”

我在 stackoverflow 和 msdn 上也看到了很多与此错误相关的帖子,但没有找到解决方案。大多数人说这个错误出现在多线程应用程序中,可以通过删除所有断点来解决。 就我而言,我的应用程序是单线程的,我也删除了所有断点,但在调试应用程序时仍然出现此错误。 当我运行应用程序时。没有调试,我的应用程序就挂起,我必须通过 visual studio 停止它。 我试图找到它挂起的代码,我找到了它挂起的那一行。这是代码片段:

MatchCollection matchesFound = Regex.Matches(content, 
                                             keywordPattern,
                                             RegexOptions.Multiline);
int matchCount = matchesFound.Count;

当执行到第二行时,即当代码试图获取 Count 属性的值时,我的应用程序挂起。我的正则表达式很好,因为我已经在 Expresso 中对其进行了测试,并且我确信在执行 Matches() 方法时应用程序不会被挂起。 如果我通过调试来到那一行,我会得到上面提到的错误。 有谁知道为什么会出现此错误以及如何解决?

我使用的是 Visual Studio 2005。

最佳答案

挂起和此错误消息的原因可能相同:有些东西需要花费大量时间来计算。无论是在代码中还是在调试器中执行此操作。调试器没有神奇的力量可以比您的应用程序更快地计算某些东西。

您可以尝试使用Debug.WriteLine 来输出实际的contentkeywordPattern。我认为很可能两者都足够大,需要很长时间才能进行。

关于c# - 函数求值被禁用,因为之前的函数求值超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2721108/

相关文章:

c#-2.0 - c# exe仅在通过任务调度程序运行时抛出错误

c# - 找出两个 ICollection<T> 集合是否包含相同对象的最快方法

c# - 在 HTML 报告字段中显示尾随空格

c# - Newtonsoft JSON Collection of Interfaces 序列化错误

c# - 对多个方法 C# 使用单个事务

sql - oracle —将oracle表中的多个用逗号分隔的值拆分为多行

regex - 防止 sed 打印未捕获的组

javascript - 我的正则表达式不起作用

C# - 确定 List<T> 是否脏?

c# - 连接 Azure blob 和文件共享存储的 Visual Studio C#