如何在控制台应用程序中最好地实现SetTimeout?

时间:2015-08-14 11:06:48

标签: c# console-application

我想知道如何在我的控制台应用中使用c#最好地实现SetTimeout

我的情景是:

我使用soap客户端上传了一个csv文件,因为文件大小很大,我得到了一个超时异常。

哪个好,因为在这个阶段我希望我的控制台应用程序暂停15分钟,然后继续工作,因为我需要等到文件上传完毕。

此外,如果文件在15分钟后仍未上传,我想每分钟检查一次以确保文件已上传。

所以关键是有一个前15分钟的SetTimeout(比如javascript)并检查文件是否上传,否则每分钟检查文件是否上传。

实施此方法的最佳方法是什么?

我试过了:

private Timer _timer;

_timer.Interval = ((1000 * 60) * 15);
_timer.Elapsed += IntervalElapsed;
_timer.Start();

IntervalElapsed方法如下:

private void IntervalElapsed(object sender, ElapsedEventArgs e){
   _timer.stop();
   // check if file has been uploaded
   var isFileUploaded = HasFileBeenUploaded();

   while(!isFileUploaded ){
      // perform setInterval until file has been uploaded
   }
}

但是我的IntervalElapsed方法永远不会被调用,控制台应用程序关闭。

2 个答案:

答案 0 :(得分:2)

您可以使用简单的Sleep方法代替Elapsed方法来实现目标

const int MINUTE = 1000 * 60;
static void Main(string[] args)
{
  System.Threading.Thread.Sleep(15 * MINUTE);          
  while(!HasFileBeenUploaded())
  {               
   System.Threading.Thread.Sleep(MINUTE);
  }
}  

- SJ

答案 1 :(得分:-3)

您可能需要有一些东西可以在您完成设置计时器后停止关闭应用程序,也许可以尝试添加

Console.ReadLine();
代码末尾的

,它将在关闭前等待用户输入。