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

时间:2013-05-08 10:24:48

标签: c# debugging visual-studio-2008 event-handling

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

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

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

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

1 个答案:

答案 0 :(得分:1)

我建议你掌握调试的基础知识,我认为这就是你现在所需要的。 Here是一本关于调试基础知识的教程。熟悉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);
    }
}

如果你想获得回调列表订阅你的回调请使用这个answer,但我认为如果你习惯调试你现在就不需要它。