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

C# 如何在控制台应用程序中最好地实现SetTimeout?,c#,console-application,C#,Console Application,我想知道如何在我的控制台应用程序中最好地使用c实现SetTimeout 我的设想是: 我使用soap客户端上传了一个csv文件,因为文件太大,所以返回了一个超时异常 这很好,因为在这个阶段,我希望我的控制台应用程序暂停15分钟,然后继续工作,因为我需要等待文件上传 另外,如果文件在15分钟后仍然没有上传,我想每分钟检查一次,以确保文件已经上传 因此,关键是在前15分钟设置超时(如javascript)并检查文件是否上传,否则每分钟检查一次文件是否上传 实现这一点的最佳方法是什么 我试过: pri

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

我的设想是:

我使用soap客户端上传了一个csv文件,因为文件太大,所以返回了一个超时异常

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

另外,如果文件在15分钟后仍然没有上传,我想每分钟检查一次,以确保文件已经上传

因此,关键是在前15分钟设置超时(如javascript)并检查文件是否上传,否则每分钟检查一次文件是否上传

实现这一点的最佳方法是什么

我试过:

private Timer _timer;

_timer.Interval = ((1000 * 60) * 15);
_timer.Elapsed += IntervalElapsed;
_timer.Start();
间隔法如下所示:

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
   }
}

但是,我的IntervaleReleased方法从未被调用,控制台应用程序将关闭。

您可能需要在完成计时器设置后使用某种方法阻止应用程序关闭,或者尝试添加

Console.ReadLine();

在代码结束时,它将在关闭前等待用户输入。

您可以使用简单的
睡眠
方法而不是
已用
方法来实现您的目标

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

--SJ

您应该在Windows服务中这样做,控制台应用程序不适合此类任务。忘了提及这将是一个每天运行的自动计划任务,因此不能允许用户IntputOK,然后可能会在任务完成时设置一个标志,还有一个while循环一直运行到标志设置为true吗?请看,有一个while循环将是一个大问题,因为它会不断尝试检查web服务以查看文件是否已上载,这听起来不是一个好主意。很抱歉