私はnodejsをC#アプリケーション内のプロセスとして開始しています。私の意図は、毎回プロセスが再開することです。ここC#のプロセスとしてnodejsを再起動
_nodeProcess = new Process
{
StartInfo =
{
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true,
RedirectStandardInput = true,
WorkingDirectory = location,
FileName = "node.exe",
Arguments = "main.js"
}
};
_nodeProcess.EnableRaisingEvents = true;
_nodeProcess.Exited += nodeExited;
_nodeProcess.Start();
string stderrStr = _nodeProcess.StandardError.ReadToEnd();
string stdoutStr = _nodeProcess.StandardOutput.ReadToEnd();
if (!String.IsNullOrWhiteSpace(stderrStr))
{
LogInfoMessage(stderrStr);
}
LogInfoMessage(stdoutStr);
_nodeProcess.WaitForExit();
_nodeProcess.Close();
nodeExited方法である:プロセスを開始するため
コードがある
private void nodeExited(object sender, EventArgs e)
{
if (!_isNodeStop)
{
this.restartERM_Click(sender, e);
}
else
{
_isNodeStop = false;
}
}
_isNodeStopが制御場所からノードを殺したときに私がtrueに設定さジュスタのフラグです。
このように:
private void KillNode()
{
foreach (var process in Process.GetProcessesByName("node"))
{
_isNodeStop = true;
process.Kill();
}
}
私の問題は、nodeExited方法は、ノードが停止されるたびにトリガしないということです。私は理由を知りませんし、どんなパターンも見えませんでした。ただ、ほとんどの時間を止めることはできません。
編集について:私はこれが問題ではないと信じています。最初に出力を読み込み、次にエラーを読み込みます。 – eomeroff