如果启动新进程,则定时器回调不起作用

时间:2013-12-02 14:36:40

标签: c# winforms

在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()?

0 个答案:

没有答案