Regex.MatchTimeout Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera interwał limitu czasu bieżącego wystąpienia.
public:
property TimeSpan MatchTimeout { TimeSpan get(); };
public TimeSpan MatchTimeout { get; }
member this.MatchTimeout : TimeSpan
Public ReadOnly Property MatchTimeout As TimeSpan
Wartość właściwości
Maksymalny interwał czasu, który może upłynąć w operacji dopasowania do wzorca przed zgłoszeniem RegexMatchTimeoutException , lub InfiniteMatchTimeout jeśli limity czasu są wyłączone.
Uwagi
Właściwość MatchTimeout definiuje przybliżony maksymalny interwał czasu dla Regex wystąpienia w celu wykonania pojedynczej pasującej operacji przed przekroczeniem limitu czasu operacji. Aparat wyrażeń regularnych RegexMatchTimeoutException zgłasza wyjątek podczas następnego sprawdzania czasu po upływie interwału limitu czasu. Zapobiega to przetwarzaniu ciągów wejściowych przez aparat wyrażeń regularnych, które wymagają nadmiernego wycofywania. Aby uzyskać więcej informacji, zobacz Wycofywanie i najlepsze rozwiązania dotyczące wyrażeń regularnych.
Ta właściwość jest tylko do odczytu. Możesz jawnie ustawić jego wartość dla pojedynczego Regex obiektu, wywołując Regex.Regex(String, RegexOptions, TimeSpan) konstruktora, i można ustawić jego wartość dla wszystkich Regex pasujących operacji w domenie aplikacji, wywołując AppDomain.SetData metodę i podając TimeSpan wartość właściwości "REGEX_DEFAULT_MATCH_TIMEOUT", jak pokazano w poniższym przykładzie.
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
AppDomain domain = AppDomain.CurrentDomain;
// Set a timeout interval of 2 seconds.
domain.SetData("REGEX_DEFAULT_MATCH_TIMEOUT", TimeSpan.FromSeconds(2));
Object timeout = domain.GetData("REGEX_DEFAULT_MATCH_TIMEOUT");
Console.WriteLine("Default regex match timeout: {0}",
timeout == null ? "<null>" : timeout);
Regex rgx = new Regex("[aeiouy]");
Console.WriteLine("Regular expression pattern: {0}", rgx.ToString());
Console.WriteLine("Timeout interval for this regex: {0} seconds",
rgx.MatchTimeout.TotalSeconds);
}
}
// The example displays the following output:
// Default regex match timeout: 00:00:02
// Regular expression pattern: [aeiouy]
// Timeout interval for this regex: 2 seconds
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim domain As AppDomain = AppDomain.CurrentDomain
' Set a timeout interval of 2 seconds.
domain.SetData("REGEX_DEFAULT_MATCH_TIMEOUT", TimeSpan.FromSeconds(2))
Dim timeout As Object = domain.GetData("REGEX_DEFAULT_MATCH_TIMEOUT")
Console.WriteLine("Default regex match timeout: {0}",
If(timeout Is Nothing, "<null>", timeout))
Dim rgx As New Regex("[aeiouy]")
Console.WriteLine("Regular expression pattern: {0}", rgx.ToString())
Console.WriteLine("Timeout interval for this regex: {0} seconds",
rgx.MatchTimeout.TotalSeconds)
End Sub
End Module
' The example displays the following output:
' Default regex match timeout: 00:00:02
' Regular expression pattern: [aeiouy]
' Timeout interval for this regex: 2 seconds
Jeśli nie ustawisz jawnie interwału limitu czasu, zostanie użyta wartość Regex.InfiniteMatchTimeout domyślna, a pasujące operacje nie upłynął limit czasu.