クラス間でいくつかの変数を渡す必要があります。状況を説明する次のコード スニペットがあります。次のコードは 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; で特定のことを行うように通知したいコード コメントにあります。どうすればそれができますか?
ありがとうございました