Regex.MatchTimeout Eigenschaft

Definition

Ruft das Laufzeitintervall der aktuellen Instanz ab.

public:
 property TimeSpan MatchTimeout { TimeSpan get(); };
public TimeSpan MatchTimeout { get; }
member this.MatchTimeout : TimeSpan
Public ReadOnly Property MatchTimeout As TimeSpan

Eigenschaftswert

TimeSpan

Das maximale Zeitintervall, das in einem Mustervergleichsvorgang verstreichen kann, bevor eine RegexMatchTimeoutException-Ausnahme ausgelöst wird, oder InfiniteMatchTimeout, wenn Timeouts deaktiviert sind.

Hinweise

Die -Eigenschaft definiert das ungefähre maximale Zeitintervall für eine Instanz, um einen einzelnen übereinstimmenden Vorgang auszuführen, bevor MatchTimeout für den Vorgang ein Time out Regex erfolgt. Die Engine für reguläre Ausdrücke löst bei der nächsten Zeitsteuerungsprüfung nach Ablauf des Time RegexMatchTimeoutException out-Intervalls eine Ausnahme aus. Dadurch wird verhindert, dass die Engine für reguläre Ausdrücke Eingabezeichenfolgen verarbeitet, die eine übermäßige Rückverfolgung erfordern. Weitere Informationen finden Sie unter Rückverfolgung und Bewährte Methoden für reguläre Ausdrücke.

Diese Eigenschaft ist schreibgeschützt. Sie können den Wert explizit für ein einzelnes Objekt festlegen, indem Sie den Konstruktor aufrufen. Sie können den Wert für alle übereinstimmenden Vorgänge in einer Anwendungsdomäne festlegen, indem Sie die -Methode aufrufen und einen Wert für die Regex Regex.Regex(String, RegexOptions, TimeSpan) Eigenschaft Regex AppDomain.SetData TimeSpan "REGEX_DEFAULT_MATCH_TIMEOUT" bereitstellen, wie im folgenden Beispiel veranschaulicht.

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

Wenn Sie nicht explizit ein Time out-Intervall festlegen, wird der Standardwert verwendet, und bei abgleichsbasierten Vorgängen Regex.InfiniteMatchTimeout kommt es nicht zu einem Time out.

Gilt für