如何在指定的小时数内关闭控制台应用程序?

时间:2011-01-27 02:38:33

标签: c# console

我的任务是在我的工作控制台应用程序中添加一个计时器,让它在一段时间后自动关闭,而不需要用户输入。 我的应用程序具有基于某些条件删除数据库中的某些数据的功能,并在每次用户输入“退出”时退出。 现在要求是,即使在尚未完成项目删除的情况下也会自动停止该过程,因为提供了关闭应用程序的时间,例如2小时。

有人能帮助我吗? 感谢。

5 个答案:

答案 0 :(得分:4)

您可以创建System.Timers.Timer,其间隔为TimeSpan.FromHours(2),并在其Environment.Exit()处理程序中调用Elapsed

答案 1 :(得分:2)

我不相信杀死程序是一个好主意,因为你正在操纵数据库中的数据,但我认为这是最简单的方法。

using Timer = System.Threading.Timer;

class Program
{
    private static readonly Timer  _timer = 
        new Timer(o => Environment.Exit(0), null, 5000, Timeout.Infinite);

    static void Main(string[] args)
    {
        Console.ReadLine();
    }
}

答案 2 :(得分:0)

1)创建一个计时器 2)设置间隔和经过的事件处理程序 3)启用运行计时器

当连接到事件的方法中的计时器触发器退出应用程序时

答案 3 :(得分:0)

如果要从数据库中删除数据然后突然停止数据可能会造成灾难性后果。所以你可以实现这样的事情。

  • BackGroundWorker
  • 中执行耗时的操作
  • 按照其他示例中的说明实现计时器。
  • 然后在提出Tick / Interval事件时请求BackgroundWorker取消任务。
  • 在您的工作代码中侦听此取消请求并安全地停止删除过程(删除或完全不执行)
  • 然后使用Environment.Exit()退出程序。

希望有所帮助

答案 4 :(得分:-1)

我通过app.config文件解决了这个问题,其中key =“Stoptime”的值。 然后我添加了一个条件,根据设置的结束时间检查当前时间。以下是一个示例解决方案(针对具有相同问题的解决方案):

    public static void Main(string[] args)
    {
        string stoptime = ConfigurationManager.AppSettings["Stoptime"];
        DateTime timeEnd = Convert.ToDateTime(stoptime);

        today = DateTime.Now;
        Console.WriteLine(today);

        for (int i = 0; i < 100000; i++)
        {
            id.Add(i.ToString());
        }

        foreach(string item in id)
        {
            today = DateTime.Now;

            if (timeEnd.CompareTo(today) >= 0)
            {
                Console.CursorLeft = 0;
                Console.Write(item + " " + today);
            }
            else
            {
                Console.WriteLine();
                Console.WriteLine("break.");
                break;
            }
        }

        Console.ReadKey();
    }