c#中的定时自动更新方法是否适用于实时环境

时间:2016-04-04 08:34:14

标签: c# asp.net-mvc timing

我写了一个方法从互联网上下载一些文件(在我的c#,mvc web项目中)。同一个文件应该在特定时间之间每天下载(因为它更新)。在测试环境中工作正常。我的问题是,如果系统处于实时状态,它在测试环境中以相同的方式正常工作。只是为了表明,这是方法

public void setupTimer(TimeSpan savingTime)
        {

            DateTime current = DateTime.Now;
            TimeSpan timeTogo = savingTime - current.TimeOfDay;

            if (timeTogo < TimeSpan.Zero)
            {
                return;
            }

            this.timer = new Timer(x =>
            {
                this.saveXmlFile();
            }, null, timeTogo, InfiniteTimeSpan);

        }

1 个答案:

答案 0 :(得分:1)

也许(特定环境下的某些东西是否完全取决于环境 - 我们不能说)。

如果某些事情导致您的流程失效,或者某个应用程序池配置为回收更改特定执行路径,或者存在异常等,则您的计时器将被处理掉。你不想要那个。

顺便说一下,考虑一个预定的任务。根据您对服务器的控制程度,您可以将其计入运行的作业,并允许Windows管理计划而不是使用计时器。这有很多好处。

简而言之 - 您这样做的步骤将是:

  1. 将代码的相关部分(定期运行的部分和所有依赖项)解压缩到C#控制台应用程序中
  2. 配置Windows任务计划程序以在特定时间运行此控制台应用程序
  3. 测试它!
  4. http://windows.microsoft.com/en-gb/windows/schedule-task#1TC=windows-7