Trace.WriteIf 方法

定义

如果条件为 true,则将有关跟踪的信息写入 Listeners 集合中的跟踪侦听器。Writes information about the trace to the trace listeners in the Listeners collection if a condition is true.

重载

WriteIf(Boolean, String, String)

如果条件为 true,则将类别名称和消息写入 Listeners 集合中的跟踪侦听器。Writes a category name and message to the trace listeners in the Listeners collection if a condition is true.

WriteIf(Boolean, Object, String)

如果条件为 true,则向 Listeners 集合中的跟踪侦听器写入类别名称和对象的 ToString() 方法值。Writes a category name and the value of the object's ToString() method to the trace listeners in the Listeners collection if a condition is true.

WriteIf(Boolean, Object)

如果条件为 true,则向 Listeners 集合中的跟踪侦听器写入对象的 ToString() 方法。Writes the value of the object's ToString() method to the trace listeners in the Listeners collection if a condition is true.

WriteIf(Boolean, String)

如果条件为 true,则将消息写入 Listeners 集合中的跟踪侦听器。Writes a message to the trace listeners in the Listeners collection if a condition is true.

WriteIf(Boolean, String, String)

如果条件为 true,则将类别名称和消息写入 Listeners 集合中的跟踪侦听器。Writes a category name and message to the trace listeners in the Listeners collection if a condition is true.

public:
 static void WriteIf(bool condition, System::String ^ message, System::String ^ category);
public static void WriteIf (bool condition, string message, string category);
[System.Diagnostics.Conditional("TRACE")]
public static void WriteIf (bool condition, string message, string category);
static member WriteIf : bool * string * string -> unit
[<System.Diagnostics.Conditional("TRACE")>]
static member WriteIf : bool * string * string -> unit
Public Shared Sub WriteIf (condition As Boolean, message As String, category As String)

参数

condition
Boolean

若要使消息被写入,则为 true;否则为 falsetrue to cause a message to be written; otherwise, false.

message
String

要写入的消息。A message to write.

category
String

用于组织输出的类别名称。A category name used to organize the output.

属性

示例

下面的示例创建一个 TraceSwitch 名为的 generalSwitchThe following example creates a TraceSwitch named generalSwitch. 此开关在代码示例之外设置。This switch is set outside the code sample.

如果开关设置为 TraceLevel Verbose ,则该示例会将第一条错误消息输出到 ListenersIf the switch is set to the TraceLevelVerbose, the example outputs the first error message to the Listeners. 有关将侦听器添加到集合的信息 Listeners ,请参阅 TraceListenerCollection 类。For information on adding a listener to the Listeners collection, see the TraceListenerCollection class.

然后,如果 TraceLevel 设置为 Error 或更高版本,则该示例会将第二个错误消息输出到第一条消息所在的同一行。Then, if the TraceLevel is set to Error or higher, the example outputs the second error message on the same line as the first message. 第二条消息后跟行结束符。The second message is followed by a line terminator.

// Class-level declaration.
// Create a TraceSwitch.
private:
   static TraceSwitch^ generalSwitch = 
      gcnew TraceSwitch( "General", "Entire Application" );

public:
   static void MyErrorMethod( Object^ myObject, String^ category )
   {
      #if defined(TRACE)
      // Write the message if the TraceSwitch level is set to Verbose.
      Trace::WriteIf( generalSwitch->TraceVerbose,
         String::Concat( myObject, 
         " is not a valid object for category: " ), category );
      
      // Write a second message if the TraceSwitch level is set
      // to Error or higher.
      Trace::WriteLineIf( generalSwitch->TraceError, 
         " Please use a different category." );
      #endif
   }
// Class-level declaration.
 // Create a TraceSwitch.
 static TraceSwitch generalSwitch = new TraceSwitch("General", "Entire Application");

 static public void MyErrorMethod(Object myObject, String category) {
    // Write the message if the TraceSwitch level is set to Verbose.
    Trace.WriteIf(generalSwitch.TraceVerbose, myObject.ToString() +
       " is not a valid object for category: ", category);

    // Write a second message if the TraceSwitch level is set to Error or higher.
    Trace.WriteLineIf(generalSwitch.TraceError, " Please use a different category.");
 }

' Class-level declaration.
' Create a TraceSwitch.
Private Shared generalSwitch As New TraceSwitch("General", "Entire Application")

Public Shared Sub MyErrorMethod(myObject As Object, category As String)
    ' Write the message if the TraceSwitch level is set to Verbose.
    Trace.WriteIf(generalSwitch.TraceVerbose, myObject.ToString() & _
        " is not a valid object for category: ", category)
    
    ' Write a second message if the TraceSwitch level is set to Error or higher.
    Trace.WriteLineIf(generalSwitch.TraceError, _
        " Please use a different category.")
End Sub

注解

默认情况下,输出将写入到的实例中 DefaultTraceListenerBy default, the output is written to an instance of DefaultTraceListener.

category参数可用于对输出消息进行分组。The category parameter can be used to group output messages.

此方法调用 Write 跟踪侦听器的方法。This method calls the Write method of the trace listener.

继承者说明

可以通过使用 If...Then 语句而不是使用语句来最大程度地减少对应用程序进行检测的性能损失 WriteIf(Boolean, String)You can minimize the performance penalty of instrumenting your application by using If...Then statements instead of using WriteIf(Boolean, String) statements. 下面两个代码示例发送相同的调试消息。The following two code examples send the same debugging message. 但是,当跟踪关闭时,第一个示例的速度要快得多,因为如果mySwitch 的计算结果 false 不是 Write(String)However, the first example is much faster when tracing is off, because if mySwitch.TraceError evaluates to false you do not call Write(String). 第二个示例始终调用 WriteIf(Boolean, String) ,即使MySwitch 为 TraceError ,也不会 false 生成任何跟踪输出。The second example always calls WriteIf(Boolean, String), even when mySwitch.TraceError is false and no tracing output is produced. 这可能导致不必要地执行任意复杂的代码。This can result in unnecessary execution of arbitrarily complex code.

第一个示例First example

if(mySwitch.TraceError)   
    Trace.Write("aNumber = " + aNumber + " out of range");  

第二个示例Second example

Trace.WriteIf(mySwitch.TraceError, "aNumber = " + aNumber + " out of range");  

另请参阅

适用于

WriteIf(Boolean, Object, String)

如果条件为 true,则向 Listeners 集合中的跟踪侦听器写入类别名称和对象的 ToString() 方法值。Writes a category name and the value of the object's ToString() method to the trace listeners in the Listeners collection if a condition is true.

public:
 static void WriteIf(bool condition, System::Object ^ value, System::String ^ category);
public static void WriteIf (bool condition, object value, string category);
[System.Diagnostics.Conditional("TRACE")]
public static void WriteIf (bool condition, object value, string category);
static member WriteIf : bool * obj * string -> unit
[<System.Diagnostics.Conditional("TRACE")>]
static member WriteIf : bool * obj * string -> unit
Public Shared Sub WriteIf (condition As Boolean, value As Object, category As String)

参数

condition
Boolean

若要使消息被写入,则为 true;否则为 falsetrue to cause a message to be written; otherwise, false.

value
Object

其名称将发送至 ListenersObjectAn Object whose name is sent to the Listeners.

category
String

用于组织输出的类别名称。A category name used to organize the output.

属性

示例

下面的示例创建一个 TraceSwitch 名为的 generalSwitchThe following example creates a TraceSwitch named generalSwitch. 此开关在代码示例之外设置。This switch is set outside the code sample.

如果开关设置为 TraceLevel Verbose ,则该示例会将和的名称输出 myObject categoryListenersIf the switch is set to the TraceLevelVerbose, the example outputs the name of the myObject and the category to the Listeners. 有关将侦听器添加到集合的信息 Listeners ,请参阅 TraceListenerCollection 类。For information on adding a listener to the Listeners collection, see the TraceListenerCollection class.

然后,如果 TraceLevel 设置为 Error 或更高版本,则该示例会将第二个错误消息输出到第一条消息所在的同一行。Then, if the TraceLevel is set to Error or higher, the example outputs the second error message on the same line as the first message. 第二条消息后跟行结束符。The second message is followed by a line terminator.

// Class-level declaration.
// Create a TraceSwitch.
private:
   static TraceSwitch^ generalSwitch = 
      gcnew TraceSwitch( "General", "Entire Application" );

public:
   static void MyErrorMethod( Object^ myObject, String^ category )
   {
      #if defined(TRACE)
      // Write the message if the TraceSwitch level is set to Verbose.
      Trace::WriteIf( generalSwitch->TraceVerbose, myObject, category );
      
      // Write a second message if the TraceSwitch level is set to
      // Error or higher.
      Trace::WriteLineIf( generalSwitch->TraceError, 
         " Object is not valid for this category." );
      #endif
   }
// Class-level declaration.
 // Create a TraceSwitch.
 static TraceSwitch generalSwitch = new TraceSwitch("General", "Entire Application");

 static public void MyErrorMethod(Object myObject, String category) {
    // Write the message if the TraceSwitch level is set to Verbose.
    Trace.WriteIf(generalSwitch.TraceVerbose, myObject, category);

    // Write a second message if the TraceSwitch level is set to Error or higher.
    Trace.WriteLineIf(generalSwitch.TraceError, " Object is not valid for this category.");
 }

' Class-level declaration.
' Create a TraceSwitch.
Private Shared generalSwitch As New TraceSwitch("General", "Entire Application")    

Public Shared Sub MyErrorMethod(myObject As Object, category As String)
    ' Write the message if the TraceSwitch level is set to Verbose.
    Trace.WriteIf(generalSwitch.TraceVerbose, myObject, category)
    
    ' Write a second message if the TraceSwitch level is set to Error or higher.
    Trace.WriteLineIf(generalSwitch.TraceError, _
        " Object is not valid for this category.")
End Sub

注解

默认情况下,输出将写入到的实例中 DefaultTraceListenerBy default, the output is written to an instance of DefaultTraceListener.

category参数可用于对输出消息进行分组。The category parameter can be used to group output messages.

此方法调用 Write 跟踪侦听器的方法。This method calls the Write method of the trace listener.

继承者说明

可以通过使用 If...Then 语句而不是使用语句来最大程度地减少对应用程序进行检测的性能损失 WriteIf(Boolean, String)You can minimize the performance penalty of instrumenting your application by using If...Then statements instead of using WriteIf(Boolean, String) statements. 下面两个代码示例发送相同的调试消息。The following two code examples send the same debugging message. 但是,当跟踪关闭时,第一个示例的速度要快得多,因为如果mySwitch 的计算结果 false 不是 Write(String)However, the first example is much faster when tracing is off, because if mySwitch.TraceError evaluates to false you do not call Write(String). 第二个示例始终调用 WriteIf(Boolean, String) ,即使MySwitch 为 TraceError ,也不会 false 生成任何跟踪输出。The second example always calls WriteIf(Boolean, String), even when mySwitch.TraceError is false and no tracing output is produced. 这可能导致不必要地执行任意复杂的代码。This can result in unnecessary execution of arbitrarily complex code.

第一个示例First example

if(mySwitch.TraceError)   
    Trace.Write("aNumber = " + aNumber + " out of range");  

第二个示例Second example

Trace.WriteIf(mySwitch.TraceError, "aNumber = " + aNumber + " out of range");  

另请参阅

适用于

WriteIf(Boolean, Object)

如果条件为 true,则向 Listeners 集合中的跟踪侦听器写入对象的 ToString() 方法。Writes the value of the object's ToString() method to the trace listeners in the Listeners collection if a condition is true.

public:
 static void WriteIf(bool condition, System::Object ^ value);
public static void WriteIf (bool condition, object value);
[System.Diagnostics.Conditional("TRACE")]
public static void WriteIf (bool condition, object value);
static member WriteIf : bool * obj -> unit
[<System.Diagnostics.Conditional("TRACE")>]
static member WriteIf : bool * obj -> unit
Public Shared Sub WriteIf (condition As Boolean, value As Object)

参数

condition
Boolean

若要使消息被写入,则为 true;否则为 falsetrue to cause a message to be written; otherwise, false.

value
Object

其名称将发送至 ListenersObjectAn Object whose name is sent to the Listeners.

属性

示例

下面的示例创建一个 TraceSwitch 名为的 generalSwitchThe following example creates a TraceSwitch named generalSwitch. 此开关在代码示例之外设置。This switch is set outside the code sample.

如果开关设置为 TraceLevel Error 或更高版本,则该示例会将值参数的第一个名称输出到 ListenersIf the switch is set to the TraceLevelError or higher, the example outputs the first name of the value parameter to the Listeners. 有关将侦听器添加到集合的信息 Listeners ,请参阅 TraceListenerCollection 类。For information on adding a listener to the Listeners collection, see the TraceListenerCollection class.

然后,如果将 TraceLevel 设置为 Verbose ,则该示例将在第一条消息所在的行上输出一条消息。Then, if the TraceLevel is set to Verbose, the example outputs a message on the same line as the first message. 第二条消息后跟行结束符。The second message is followed by a line terminator.

// Class-level declaration.
// Create a TraceSwitch.
private:
   static TraceSwitch^ generalSwitch = 
      gcnew TraceSwitch( "General", "Entire Application" );

public:
   static void MyErrorMethod( Object^ myObject )
   {
      #if defined(TRACE)
      // Write the message if the TraceSwitch level is set 
      // to Error or higher.
      Trace::WriteIf( generalSwitch->TraceError, myObject );
      
      // Write a second message if the TraceSwitch level is set
      // to Verbose.
      Trace::WriteLineIf( generalSwitch->TraceVerbose, 
         " is not a valid value for this method." );
      #endif
   }
// Class-level declaration.
 // Create a TraceSwitch.
 static TraceSwitch generalSwitch = new TraceSwitch("General", "Entire Application");

 static public void MyErrorMethod(Object myObject) {
    // Write the message if the TraceSwitch level is set to Error or higher.
    Trace.WriteIf(generalSwitch.TraceError, myObject);

    // Write a second message if the TraceSwitch level is set to Verbose.
    Trace.WriteLineIf(generalSwitch.TraceVerbose, " is not a valid value for this method.");
 }

' Class-level declaration.
' Create a TraceSwitch.
Private Shared generalSwitch As New TraceSwitch("General", "Entire Application")

Public Shared Sub MyErrorMethod(myObject As Object)
    ' Write the message if the TraceSwitch level is set to Error or higher.
    Trace.WriteIf(generalSwitch.TraceError, myObject)
    
    ' Write a second message if the TraceSwitch level is set to Verbose.
    Trace.WriteLineIf(generalSwitch.TraceVerbose, _
        " is not a valid value for this method.")
End Sub

注解

默认情况下,输出将写入到的实例中 DefaultTraceListenerBy default, the output is written to an instance of DefaultTraceListener.

此方法调用 Write 跟踪侦听器的方法。This method calls the Write method of the trace listener.

继承者说明

可以通过使用 If...Then 语句而不是使用语句来最大程度地减少对应用程序进行检测的性能损失 WriteIf(Boolean, String)You can minimize the performance penalty of instrumenting your application by using If...Then statements instead of using WriteIf(Boolean, String) statements. 下面两个代码示例发送相同的调试消息。The following two code examples send the same debugging message. 但是,当跟踪关闭时,第一个示例的速度要快得多,因为如果mySwitch 的计算结果 false 不是 Write(String)However, the first example is much faster when tracing is off, because if mySwitch.TraceError evaluates to false you do not call Write(String). 第二个示例始终调用 WriteIf(Boolean, String) ,即使MySwitch 为 TraceError ,也不会 false 生成任何跟踪输出。The second example always calls WriteIf(Boolean, String), even when mySwitch.TraceError is false and no tracing output is produced. 这可能导致不必要地执行任意复杂的代码。This can result in unnecessary execution of arbitrarily complex code.

第一个示例First example

if(mySwitch.TraceError)   
    Trace.Write("aNumber = " + aNumber + " out of range");  

第二个示例Second example

Trace.WriteIf(mySwitch.TraceError, "aNumber = " + aNumber + " out of range");  

另请参阅

适用于

WriteIf(Boolean, String)

如果条件为 true,则将消息写入 Listeners 集合中的跟踪侦听器。Writes a message to the trace listeners in the Listeners collection if a condition is true.

public:
 static void WriteIf(bool condition, System::String ^ message);
public static void WriteIf (bool condition, string message);
[System.Diagnostics.Conditional("TRACE")]
public static void WriteIf (bool condition, string message);
static member WriteIf : bool * string -> unit
[<System.Diagnostics.Conditional("TRACE")>]
static member WriteIf : bool * string -> unit
Public Shared Sub WriteIf (condition As Boolean, message As String)

参数

condition
Boolean

若要使消息被写入,则为 true;否则为 falsetrue to cause a message to be written; otherwise, false.

message
String

要写入的消息。A message to write.

属性

示例

下面的示例创建一个 TraceSwitch 名为的 generalSwitchThe following example creates a TraceSwitch named generalSwitch. 此开关在代码示例之外设置。This switch is set outside the code sample.

如果开关设置为 TraceLevel Error 或更高版本,则该示例会将第一条错误消息输出到 ListenersIf the switch is set to the TraceLevelError or higher, the example outputs the first error message to the Listeners. 有关将侦听器添加到集合的信息 Listeners ,请参阅 TraceListenerCollection 类。For information on adding a listener to the Listeners collection, see the TraceListenerCollection class.

然后,如果将 TraceLevel 设置为,则该示例会将第 Verbose 二个错误消息输出到第一条消息所在的同一行。Then, if the TraceLevel is set to Verbose, the example outputs the second error message on the same line as the first message. 第二条消息后跟行结束符。The second message is followed by a line terminator.

// Class-level declaration.
// Create a TraceSwitch.
private:
   static TraceSwitch^ generalSwitch = 
      gcnew TraceSwitch( "General", "Entire Application" );

public:
   static void MyErrorMethod()
   {
      #if defined(TRACE)
      // Write the message if the TraceSwitch level is set to
      // Error or higher.
      Trace::WriteIf( generalSwitch->TraceError, "My error message. " );
      
      // Write a second message if the TraceSwitch level is set
      // to Verbose.
      Trace::WriteLineIf( generalSwitch->TraceVerbose, 
         "My second error message." );
      #endif
   }
// Class-level declaration.
 // Create a TraceSwitch.
 static TraceSwitch generalSwitch = new TraceSwitch("General", "Entire Application");

 static public void MyErrorMethod() {
    // Write the message if the TraceSwitch level is set to Error or higher.
    Trace.WriteIf(generalSwitch.TraceError, "My error message. ");

    // Write a second message if the TraceSwitch level is set to Verbose.
    Trace.WriteLineIf(generalSwitch.TraceVerbose, "My second error message.");
 }

' Class-level declaration.
' Create a TraceSwitch.
Private Shared generalSwitch As New TraceSwitch("General", "Entire Application")

Public Shared Sub MyErrorMethod()
    ' Write the message if the TraceSwitch level is set to Error or higher.
    Trace.WriteIf(generalSwitch.TraceError, "My error message. ")
    
    ' Write a second message if the TraceSwitch level is set to Verbose.
    Trace.WriteLineIf(generalSwitch.TraceVerbose, "My second error message.")
End Sub

注解

默认情况下,输出将写入到的实例中 DefaultTraceListenerBy default, the output is written to an instance of DefaultTraceListener.

此方法调用 Write 跟踪侦听器的方法。This method calls the Write method of the trace listener.

继承者说明

可以通过使用 If...Then 语句而不是使用语句来最大程度地减少对应用程序进行检测的性能损失 WriteIf(Boolean, String)You can minimize the performance penalty of instrumenting your application by using If...Then statements instead of using WriteIf(Boolean, String) statements. 下面两个代码示例发送相同的调试消息。The following two code examples send the same debugging message. 但是,当跟踪关闭时,第一个示例的速度要快得多,因为如果mySwitch 的计算结果 false 不是 Write(String)However, the first example is much faster when tracing is off, because if mySwitch.TraceError evaluates to false you do not call Write(String). 第二个示例始终调用 WriteIf(Boolean, String) ,即使MySwitch 为 TraceError ,也不会 false 生成任何跟踪输出。The second example always calls WriteIf(Boolean, String), even when mySwitch.TraceError is false and no tracing output is produced. 这可能导致不必要地执行任意复杂的代码。This can result in unnecessary execution of arbitrarily complex code.

第一个示例First example

if(mySwitch.TraceError)   
    Trace.Write("aNumber = " + aNumber + " out of range");  

第二个示例Second example

Trace.WriteIf(mySwitch.TraceError, "aNumber = " + aNumber + " out of range");  

另请参阅

适用于