2

可能重复:
在 .NET 4 中实现 RegEx 超时

Regex regexpr = new Regex(anchorPattern[item.Key], RegexOptions.Singleline, TimeSpan.FromMilliseconds(10));

“System.Text.RegulerExpression.Regex”不包含采用 3 个参数的构造函数。注意:错误在framework 4,如果你使用framework 4.5就不会遇到这个错误。但我一直在使用框架 4,我必须设置超时正则表达式。对此有何补救措施?

4

1 回答 1

3

没有像您在 .NET 4 中使用的那样的构造函数。查看文档页面;构造函数的唯一选项是:

正则表达式()

正则表达式(字符串)

正则表达式(SerializationInfo,StreamingContext)

正则表达式(字符串,正则表达式选项)

编辑

您可以使用任务来运行正则表达式和Wait方法来传递超时。这样的事情应该做的工作:

var regexpr = new Regex(anchorPattern[item.Key], RegexOptions.Singleline);
var task = Task.Factory.StartNew(()=>regexpr.Match(foo));
var completedWithinAllotedTime = task.Wait(TimeSpan.FromMilliseconds(10));
于 2012-11-23T09:49:37.933 回答