Regex.MatchTimeout Eigenschap

Definitie

Hiermee haalt u het time-outinterval van het huidige exemplaar op.

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

Waarde van eigenschap

Het maximale tijdsinterval dat kan worden verstreken in een patroonvergelijkingsbewerking voordat een RegexMatchTimeoutException bewerking wordt gegenereerd, of InfiniteMatchTimeout als time-outs zijn uitgeschakeld.

Opmerkingen

De MatchTimeout eigenschap definieert het geschatte maximale tijdsinterval voor een Regex exemplaar om één overeenkomende bewerking uit te voeren voordat er een time-out optreedt voor de bewerking. De engine voor reguliere expressies genereert een RegexMatchTimeoutException uitzondering tijdens de volgende tijdscontrole nadat het time-outinterval is verstreken. Hiermee voorkomt u dat de engine voor reguliere expressies invoerreeksen verwerkt waarvoor overmatige backtracking is vereist. Zie Backtracking en Best Practices voor reguliere expressies voor meer informatie.

Deze eigenschap is alleen-lezen. U kunt de waarde expliciet voor een afzonderlijk Regex object instellen door de Regex.Regex(String, RegexOptions, TimeSpan) constructor aan te roepen. U kunt de waarde voor alle Regex overeenkomende bewerkingen in een toepassingsdomein instellen door de AppDomain.SetData methode aan te roepen en een TimeSpan waarde op te geven voor de eigenschap 'REGEX_DEFAULT_MATCH_TIMEOUT', zoals in het volgende voorbeeld wordt geïllustreerd.

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

Als u niet expliciet een time-outinterval instelt, wordt de standaardwaarde Regex.InfiniteMatchTimeout gebruikt en treedt er geen time-out op bij overeenkomende bewerkingen.

Van toepassing op