如何获取有关事件的调试信息

Nov*_*ice 5 c# debugging event-handling visual-studio-2008

我有一个具有以下设计的程序

  • 几个单独的类,每个类实现一种类型的算法
  • 一个 Windows 窗体界面,用于提供运行不同算法的输入和执行完全相同操作的语音命令。
  • 每个算法都通过单击单独的按钮来运行
  • 每个算法都会引发一些事件(特定于算法)
  • 事件监听器依次输出
  • 表单上的标签并通过语音 API,使用扬声器说出结果

我面临的问题是,在调试时,如果一种算法出现问题,有时会自动启动其他算法。我希望能够知道在任何时间点哪些事件侦听器注册了某个事件(如果有)。我正在使用 VS2008 和 C#。

我还想知道我们是否使用计时器作为局部变量并在每个类中向该计时器添加一个事件侦听器。一个类的计时器可能会触发其他类中的侦听器。我对这个事件侦听器的东西很陌生,不确定我是否遗漏了一些导致我提出这个问题的基本信息,或者它是有一些基础的问题。

Muj*_*han 1

我建议你了解调试的基础知识,我认为这就是你现在所需要的。是调试基础知识的教程。熟悉 F10 和 F11 键。通过使用断点,您可以获得算法的执行顺序。

第二,一个类的计时器可能会触发其他类中的侦听器这是一个示例。

MyClass myClass = new MyClass();
Timer timer1 = new Timer();
timer1.Tick += myClass.TimerCallback; // subscribe to other's class method
timer1.Interval = 1000;
timer1.Start();

public class MyClass
{
    public void TimerCallback(object sender, EventArgs eventArgs)
    {
        Console.WriteLine("Timer Called by: " + sender);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您想获取回调列表订阅您的回调,请使用此答案,但我认为如果您习惯了调试,那么您现在不需要它。