【问题标题】:How to get debug information about Events如何获取有关事件的调试信息
【发布时间】:2013-05-08 10:24:47
【问题描述】:

我有一个设计如下的程序

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

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

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

【问题讨论】:

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


    【解决方案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,但如果您习惯调试,我认为您现在不需要它。

    【讨论】:

    • 我对F10和F11比较熟悉,只是想知道注册了哪些听众。我从哪里得到这些信息。此外,如果我在每个类中都有一个计时器和一个回调函数,那么一个计时器的滴答声是否会影响其他计时器。假设我有两个不同类的两个对象,每个对象都有自己的计时器设置为不同的时间间隔。是否有可能一个类的计时器滴答声也启动另一个类的滴答声。
    猜你喜欢
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-12
    相关资源
    最近更新 更多