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