4

次のデザインのプログラムがあります

  • それぞれが 1 つのタイプのアルゴリズムを実装する、いくつかの別個のクラス
  • 異なるアルゴリズムを実行するための入力を提供するための Windows フォーム インターフェイスと、まったく同じことを行うための音声コマンド。
  • 各アルゴリズムは、個別のボタンをクリックして実行されます
  • 各アルゴリズムはいくつかのイベントを発生させます (アルゴリズムに固有)
  • イベントリスナーは順番に出力します
  • フォーム上のラベルと音声 API を介して、スピーカーを使用して結果を読み上げる

私が直面している問題は、デバッグ中に 1 つのアルゴリズムで問題が発生した場合、他のアルゴリズムが自動的に開始されることがあることです。どのイベントリスナーが何らかのイベントに登録されているかをいつでも知りたいです。C# で VS2008 を使用しています。

また、Timer をローカル変数として使用し、各クラスでそのタイマーにイベント リスナーを追加するかどうかも知りたいです。あるクラスのタイマーが他のクラスのリスナーをトリガーする可能性があります。私はこのイベントリスナーのことは初めてで、この質問をするようになった基本的な情報が欠けているのか、それとも何らかの根拠の問題があるのか​​ わかりません。

4

1 に答える 1

2

デバッグの基本を習得することをお勧めします。今のところ必要なのはこれだけだと思います。ここでは、デバッグの基本についてのチュートリアルを示します。F10 キーと F11 キーに慣れてください。ブレークポイントを使用すると、アルゴリズムの実行シーケンスを取得できます。

第 2 に、あるクラスのタイマーが他のクラスのリスナーをトリガーする可能性があります。ここに例を示します。

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);
    }
}

コールバックをサブスクライブするコールバックのリストを取得したい場合は、この回答を使用しますが、デバッグに慣れれば、今のところ必要ないと思います。

于 2013-05-08T15:33:29.787 に答える