Regex.MatchTimeout Proprietà

Definizione

Ottiene l'intervallo di timeout dell'istanza corrente.

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

Valore della proprietà

TimeSpan

Intervallo di tempo massimo che può trascorrere in un'operazione di criteri di ricerca prima che venga generata un'eccezione RegexMatchTimeoutException o InfiniteMatchTimeout se i timeout sono disabilitati.

Commenti

La proprietà definisce l'intervallo di tempo massimo approssimativo per l'esecuzione di una singola operazione corrispondente da parte di un'istanza prima MatchTimeout Regex del timeout dell'operazione. Il motore delle espressioni regolari genera un'eccezione durante il successivo controllo dell'intervallo dopo che è trascorso RegexMatchTimeoutException l'intervallo di timeout. Ciò impedisce al motore delle espressioni regolari di elaborare stringhe di input che richiedono un backtracking eccessivo. Per altre informazioni, vedere Backtracking e procedure consigliate per le espressioni regolari.

Questa proprietà è di sola lettura. È possibile impostarne il valore in modo esplicito per un singolo oggetto chiamando il costruttore ed è possibile impostarne il valore per tutte le operazioni corrispondenti in un dominio applicazione chiamando il metodo e specificando un valore per la proprietà Regex Regex.Regex(String, RegexOptions, TimeSpan) Regex AppDomain.SetData "REGEX_DEFAULT_MATCH_TIMEOUT", come illustrato nell'esempio TimeSpan seguente.

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

Se non si imposta in modo esplicito un intervallo di timeout, viene utilizzato il valore predefinito e le operazioni corrispondenti Regex.InfiniteMatchTimeout non si verificano timeout.

Si applica a