在Form加载中,我有这个代码,它设置一个每10秒调用一次的回调函数
private void Form1_Load(object sender, EventArgs e)
{
var timer = new System.Threading.Timer(_ => updateMethod(), null, 0,
10*1000);
}
在updateMethod中,我启动了一个新进程来启动旧版exe并读取输出
private void updateMethod()
{
string console_exe = "MyLegacy.Exe";
Process prcss = new Process();
prcss .StartInfo.UseShellExecute = false;
prcss .StartInfo.RedirectStandardOutput = true;
prcss .StartInfo.FileName = console_exe;
prcss .StartInfo.Arguments = URL + " list";
prcss .Start();
prcss .WaitForExit();
string output = prcss.StandardOutput.ReadLine();
while (null != output)
{
output = prcss.StandardOutput.ReadLine();
}
}
运行我的应用程序时,updateMethod()被调用两次。 之后就不会被召唤了。
在updateMethod()中,如果我在调用新进程之前返回,则会重复调用该函数,直到我关闭应用程序。
不明白为什么这个方法被调用两次但之后没有。 是否有另一种方法来代替新的Process()?