2012-11-23 8 views
2

가능한 중복 :
Implementing RegEx Timeout in .NET 4시간 제한 정규식 4

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

"System.Text.RegulerExpression.Regex는"3 개 인수를 취하는 constructer 포함되어 있지 않습니다. 참고 : 오류는 프레임 워크 4에 있습니다. 프레임 워크 4.5를 사용하면이 오류가 발생하지 않습니다. 하지만 프레임 워크 4를 사용하고 있으며 timeout regexpr을 설정해야합니다. 이것에 대한 해결책은 무엇입니까?

+1

가 [.NET에서 구현 정규식 시간 초과 4]에서 살펴 보자 (http://stackoverflow.com/questions/9460661/implementing-regex-timeout-in-net- :이 같은 뭔가 일을해야합니다 4) -이 방법을 직접 구현하는 방법에 대한 예가 있습니다. (NB에서는 상속 시간이 끝나는'Regex'를 만들지 못하지만,'Match '에 대한 개별 호출을 시간 초과 할 수 있습니다.) – Rawling

답변

3

.NET 4에서 사용하는 것과 같은 생성자가 없습니다. documentation page을 살펴보십시오. 생성자의 유일한 옵션은 다음과 같습니다

정규식()

정규식 (문자열)

정규식 (SerializationInfo에, StreamingContext)

정규식 (문자열, RegexOptions)

수정

Task을 사용하여 정규식을 실행하고 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)); 
+0

¼ fw 4.0의 정규 표현식 생성자를 알고 있습니다. 프레임 워크 4에서 타임 아웃을 정규식으로 설정하는 방법에 대해 질문했습니다. – RockOnGom

+0

@alikoyuncu, 최신 편집을 참조하십시오. 감사합니다. @RePierre. – RePierre

+0

나는 그 문제를 해결했다. – RockOnGom