BooleanSwitch 类

提供一个简单的开/关开关来控制调试和跟踪输出。

**命名空间:**System.Diagnostics
**程序集:**System(在 system.dll 中)

语法

声明
Public Class BooleanSwitch
    Inherits Switch
用法
Dim instance As BooleanSwitch
public class BooleanSwitch : Switch
public ref class BooleanSwitch : public Switch
public class BooleanSwitch extends Switch
public class BooleanSwitch extends Switch

备注

可以使用布尔跟踪开关根据消息的重要性来启用或禁用消息。使用 Enabled 属性可获取开关的当前值。

可以通过应用程序配置文件启用或禁用 BooleanSwitch,然后在应用程序中使用此已配置的 BooleanSwitch 值。也可以在代码中创建 BooleanSwitch 并直接设置 Enabled 属性,以检测特定部分的代码。

若要配置 BooleanSwitch,请编辑与应用程序名对应的配置文件。在该文件中,可以添加或移除开关、设置开关的值或清除以前由应用程序设置的所有开关。应像下面的示例这样对配置文件进行格式化:

<configuration>
  <system.diagnostics>
    <switches>
      <add name="mySwitch" value="1"/>
    </switches>
  </system.diagnostics>
</configuration>

此示例配置节定义一个 DisplayName 属性设置为 mySwitch 并且 Enabled 值设置为 trueBooleanSwitch。在应用程序中,通过创建同名的 BooleanSwitch,可使用已配置的开关值,如下面的代码示例所示。

Private Shared boolSwitch As New BooleanSwitch("mySwitch", _
    "Switch in config file")

Public Shared Sub Main(ByVal CmdArgs() As String)
    '...
    Console.WriteLine("Boolean switch {0} configured as {1}", _
        boolSwitch.DisplayName, boolSwitch.Enabled.ToString())
    If boolSwitch.Enabled Then
        '...
    End If

End Sub
private static BooleanSwitch boolSwitch = new BooleanSwitch("mySwitch", 
    "Switch in config file");

public static void Main(string[] args) 
{
    //...
    Console.WriteLine("Boolean switch {0} configured as {1}", 
        boolSwitch.DisplayName, boolSwitch.Enabled.ToString());
    if (boolSwitch.Enabled)
    {
        //...
    }
}

默认情况下,Enabled 属性设置为配置文件中指定的值。将开关配置为 0 值可将 Enabled 属性设置为 false;将开关配置为非 0 值可将 Enabled 属性设置为 true。如果 BooleanSwitch 构造函数未能在配置文件中找到初始开关设置,新开关的 Enabled 属性则设置为默认值 false

必须启用跟踪或调试才能使用开关。下面的语法是编译器特定的语法。如果使用 C# 或 Visual Basic 之外的编译器,请参见相应编译器的文档。

  • 若要在 C# 中启用调试,请在编译代码时将 /d:DEBUG 标志添加到编译器命令行,或者可以将 #define DEBUG 文件添加到文件的顶部。在 Visual Basic 中,将 /d:DEBUG=True 标志添加到编译器命令行。

  • 若要在 C# 中启用跟踪,请在编译代码时将 /d:TRACE 标志添加到编译器命令行中,或者将 #define TRACE 添加到文件的开头。在 Visual Basic 中,将 /d:TRACE=True 标志添加到编译器命令行。

提示

在使用孤立的 BooleanSwitch 类时,不需要使用这些调试和跟踪编译器开关。只有在与按条件编译的 TraceDebug 方法一起使用时,这些开关才是必需的。

有关配置应用程序的更多信息,请参见 DebugTrace。有关如何配置和使用跟踪开关的更多信息,请参见 跟踪开关

提示

若要提高性能,可以在类中将 BooleanSwitch 成员设置为 static

主题 位置
如何:创建和初始化跟踪开关 .NET Framework:调试
如何:配置跟踪开关 .NET Framework:调试
如何:配置跟踪开关 .NET Framework:调试
如何:创建和初始化跟踪开关 .NET Framework:调试

示例

下面的示例创建 BooleanSwitch 并使用该开关确定是否输出错误信息。请您以类级别创建此开关。Main 方法将其位置传递给 MyMethod,后者将输出错误信息和发生错误的位置。

' Class level declaration.
' Create a BooleanSwitch for data. 
Private Shared dataSwitch As New BooleanSwitch("Data", "DataAccess module")


Public Shared Sub MyMethod(location As String)
    ' Insert code here to handle processing.
    If dataSwitch.Enabled Then
        Console.WriteLine(("Error happened at " + location))
    End If
End Sub 'MyMethod

' Entry point which delegates to C-style main function.
Public Overloads Shared Sub Main()
    Main(System.Environment.GetCommandLineArgs())
End Sub
 
Overloads Public Shared Sub Main(args() As String)
    ' Run the method which writes an error message specifying the location of the error.
    MyMethod("in Main")
End Sub 'Main
// Class level declaration.
/* Create a BooleanSwitch for data.*/
static BooleanSwitch dataSwitch = new BooleanSwitch("Data", "DataAccess module");

static public void MyMethod(string location) {
   //Insert code here to handle processing.
   if(dataSwitch.Enabled)
      Console.WriteLine("Error happened at " + location);
}

public static void Main(string[] args) {
   //Run the method which writes an error message specifying the location of the error.
   MyMethod("in Main");
}
public ref class BooleanSwitchTest
{
private:

   /* Create a BooleanSwitch for data.*/
   static BooleanSwitch^ dataSwitch = gcnew BooleanSwitch( "Data","DataAccess module" );

public:
   static void MyMethod( String^ location )
   {
      
      //Insert code here to handle processing.
      if ( dataSwitch->Enabled )
            Console::WriteLine( "Error happened at {0}", location );
   }

};

int main()
{
   
   //Run the method which writes an error message specifying the location of the error.
   BooleanSwitchTest::MyMethod( "in main" );
}
// Class level declaration.
/* Create a BooleanSwitch for data.
 */
private static BooleanSwitch dataSwitch = 
    new BooleanSwitch("Data", "DataAccess module");

public static void MyMethod(String location)
{
    //Insert code here to handle processing.
    if (dataSwitch.get_Enabled()) {
        Console.WriteLine("Error happened at " + location);
    }
} //MyMethod

public static void main(String[] args)
{
    // Run the method which writes an error message specifying 
    // the location of the error.
    MyMethod("in main");
} //main
// Class level declaration.
 /* Create a BooleanSwitch for data.*/
 static var dataSwitch : BooleanSwitch = new BooleanSwitch("Data", "DataAccess module");
 
 static public function MyMethod(location : String) {
    // Insert code here to handle processing.
    if(dataSwitch.Enabled)
       Console.WriteLine("Error happened at " + location);
 }
 
 public static function Main() {
    // Run the method which writes an error message specifying the location of the error.
    MyMethod("in Main");
 }

继承层次结构

System.Object
   System.Diagnostics.Switch
    System.Diagnostics.BooleanSwitch

线程安全

此类型的任何公共静态(Visual Basic 中的 Shared)成员都是线程安全的,但不保证所有实例成员都是线程安全的。

平台

Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1、1.0

请参见

参考

BooleanSwitch 成员
System.Diagnostics 命名空间
Switch
TraceSwitch
Debug
Trace