TraceFilter.ShouldTrace 方法

定義

在衍生的類別中進行覆寫時,判斷追蹤接聽程式是否應該追蹤事件。

public:
 abstract bool ShouldTrace(System::Diagnostics::TraceEventCache ^ cache, System::String ^ source, System::Diagnostics::TraceEventType eventType, int id, System::String ^ formatOrMessage, cli::array <System::Object ^> ^ args, System::Object ^ data1, cli::array <System::Object ^> ^ data);
public abstract bool ShouldTrace (System.Diagnostics.TraceEventCache? cache, string source, System.Diagnostics.TraceEventType eventType, int id, string? formatOrMessage, object?[]? args, object? data1, object?[]? data);
public abstract bool ShouldTrace (System.Diagnostics.TraceEventCache cache, string source, System.Diagnostics.TraceEventType eventType, int id, string formatOrMessage, object[] args, object data1, object[] data);
abstract member ShouldTrace : System.Diagnostics.TraceEventCache * string * System.Diagnostics.TraceEventType * int * string * obj[] * obj * obj[] -> bool
Public MustOverride Function ShouldTrace (cache As TraceEventCache, source As String, eventType As TraceEventType, id As Integer, formatOrMessage As String, args As Object(), data1 As Object, data As Object()) As Boolean

參數

cache
TraceEventCache

TraceEventCache,其中包含追蹤事件的資訊。

source
String

來源的名稱。

eventType
TraceEventType

其中一個 TraceEventType 值,可指定引發追蹤的事件類型。

id
Int32

追蹤識別項號碼。

formatOrMessage
String

供撰寫由 args 參數所指定引數之陣列使用的格式,或是要撰寫的訊息。

args
Object[]

引數物件的陣列。

data1
Object

追蹤資料物件。

data
Object[]

追蹤資料物件的陣列。

傳回

如果要追蹤指定的事件,則為 true,否則為 false

範例

下列程式代碼範例示範如何覆寫 ShouldTrace 方法,以指出當事件的追蹤事件類型等於 TraceEventType.Error時,應該發生追蹤。

public ref class ErrorFilter : TraceFilter
{
public:
    virtual bool ShouldTrace(TraceEventCache^ cache, String^ source,
        TraceEventType eventType, int id, String^ formatOrMessage,
        array<Object^>^ args, Object^ data, array<Object^>^ dataArray) override
    {
        return eventType == TraceEventType::Error;
    }
};
public class ErrorFilter : TraceFilter
{
    override public bool ShouldTrace(TraceEventCache cache, string source,
        TraceEventType eventType, int id, string formatOrMessage,
        object[] args, object data, object[] dataArray)
    {
        return eventType == TraceEventType.Error;
    }
}
Public Class ErrorFilter
    Inherits TraceFilter

    Public Overrides Function ShouldTrace ( cache As TraceEventCache, _
                source As String, eventType As TraceEventType, _
                id As Integer, formatOrMessage As String, _
                args As Object(), data As Object, _
                dataArray As Object() ) As Boolean
        If eventType = TraceEventType.Error Then
            Return True
        Else
            Return False
        End If
    End Function
End Class

給實施者的注意事項

如果應該追蹤傳遞的參數所指定的事件,這個方法的實作應該會傳回 true 。 否則,方法應該會傳回 false。 例如,只允許錯誤事件傳遞至接聽程式的篩選應該檢查 eventType 參數,並在追蹤事件類型層級設定Error為或更新時傳回 ,否則應該傳回 truefalse

方法的實作應該準備好在下列參數中處理 nullargsdata1、、 dataformatOrMessagecache。 如果參數值為 null,則參數不是 事件的一部分。 例如,如果 args 參數是 null,表示事件沒有任何自變數。 data如果 參數為 null,則有一個或沒有數據物件。 如果有一個數據物件,則會在 參數中找到 data1 它。 單一數據對象與數據物件陣列之間的差異的原因是效能。 如果只追蹤一個物件,就沒有理由建立物件陣列,就像一般情況一樣。 data如果參數不是 null,參數data1也必須不是 null

它保證 source 參數不是 null ,而不是空字串 (“”) 。

方法的實作可以選擇性地擲回下列例外狀況:

適用於