Regex.MatchTimeout 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得目前執行個體的逾時間隔。
public:
property TimeSpan MatchTimeout { TimeSpan get(); };
public TimeSpan MatchTimeout { get; }
member this.MatchTimeout : TimeSpan
Public ReadOnly Property MatchTimeout As TimeSpan
屬性值
在RegexMatchTimeoutException擲回之前,可在模式比對作業中流逝的最大時間間隔,或者為InfiniteMatchTimeout(如果停用逾時)。
備註
屬性 MatchTimeout 會定義實例在作業逾時之前執行單一比對作業的 Regex 大約時間間隔上限。正則運算式引擎會在逾時間隔經過之後,在其下一 RegexMatchTimeoutException 次計時檢查期間擲回例外狀況。 這可防止正則運算式引擎處理需要過多回溯的輸入字串。 如需詳細資訊,請參閱正則運算式的回溯和最佳做法。
這個屬性是唯讀的。 您可以藉由呼叫 Regex.Regex(String, RegexOptions, TimeSpan) 建構函式來明確設定個別 Regex 物件的值;您可以呼叫 AppDomain.SetData 方法,並為應用程式域中的所有 Regex 相符作業設定其值,並提供 TimeSpan 「REGEX_DEFAULT_MATCH_TIMEOUT」 屬性的值,如下列範例所示。
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
如果您未明確設定逾時間隔,則會使用預設值 Regex.InfiniteMatchTimeout ,而且比對作業不會逾時。