0

私は、ソフトウェアがハードウェア パネルに対してコマンドを発行し、コマンドが発行されると、その応答が数秒後に受信されるソフトウェアに取り組んでいます。次のようなさまざまなハードウェアコマンドにはさまざまな機能があります

public void FunctionA()
{
    StartCommandA();
}

および他のコマンドを実行するために使用される同じパターンの他の関数。

FunctionB();
FunctionC();

コマンド A の応答を受け取ったら、その応答から別の関数を呼び出しますが、このアプローチは設計パターンの慣行からすると適切ではありません。

私がやりたいことは、関数のリストを作成し、これらすべての関数を次々に呼び出すことですが、最初の関数の応答を取得すると、次の関数が呼び出されます。

マルチキャストデリゲートを使用してこれを試しましたが、すべての関数をそのデリゲートに追加すると、関数のリストを取得する方法を見つけることができません。これは私がやろうとしていることです。

FunList funList_ConfigAndSerialTests = new FunList(StartSerialTest);

        funList_ConfigAndSerialTests += StartSerialTest;

        funList_ConfigAndSerialTests += StartMsrTest;

        funList_ConfigAndSerialTests += StartContactLessTest;

        //funList_ConfigAndSerialTests.Invoke();

        Delegate[] del = funList_ConfigAndSerialTests.GetInvocationList();

        foreach (Delegate item in funList_ConfigAndSerialTests.GetInvocationList())
        {
            while (true)
            {
                if (IsResponseReceived == true)
                {
                    // Call function here 
                }
            }
        }
4

2 に答える 2