0

クラス間でいくつかの変数を渡す必要があります。状況を説明する次のコード スニペットがあります。次のコードは app1 のものであることに注意してください。SimpleScene() クラスがエントリ ポイントです。

class SimpleScene {
    bool isReady;
    bool result;

    Protected override Run() {
        // instance of class StateMonitor
        StateMonitor sm = new StateMonitor;
        Listener(sm);
        sm.proc();

        while(!isReady) {}

        result = func();
        if (result) {
            // need to inform StateMonitor to do a certain action, e.g. set bool flag = true, and StateMonitor does something iff flag == true;
        }
    }

    void OnReady(bool isOnReady) {
        if(isOnReady)
             isReady = true;
    }

    Private void Listener(StateMonitor sm) {
        sm.OnReady += new StateMonitor.ready(OnReady);
    }

    bool func() {
        //do something...
    }

}

class StateMonitor {
    public delegates void ready(bool isReady);
    public event ready OnReady;

    // start app2 as a new process
    public void proc() {
        Process p_app2 = new Process();
        // omit other startinfo for app2.
        p_app2.OutputDataReceived += new DataReceivedEventHandler(outputHandler);
        p_app2.Start();
        p_app2.BeginOutputReadLine();
    }        

    public void outputHandler(object sender, DataReceivedEventArgs line) {
        // omit output data line match
        if (OnReady != null)
            OnReady(true);
    }
}

クラス StateMonitor は、別のアプリケーション (app2 としましょう) を開始し、app2 から stdout を読み取ります。出力文字列の形式に応じて、さまざまなことを行います。

私の問題は、StateMonitor にフラグ == true; で特定のことを行うように通知したいコード コメントにあります。どうすればそれができますか?

ありがとうございました

4

1 に答える 1