Regex.MatchTimeout Eigenschap
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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.