调度MVC 4 - C#在特定时间调用函数

时间:2012-08-30 16:11:34

标签: c# sms asp.net-mvc-4 scheduling

我是 MVC 4 的新手,这是我的第一个这项技术项目,我浏览了{{3}中的MovieContosoUniversity示例}}

该网站声称出售预付产品。 数据库包含用户,经销商,供应商等的表格。

我正在尝试安排我的系统。

例如,每天晚上23:59,将调用特定函数并从数据库中检索满足特定查询的所有用户名和密码。

我还需要在特定日期发送短信,我在表格上分配了一个单独的列,该列将保持在服务结束时发出的警报。

我很想听听有关想法以及如何开始搞乱系统调度或实现具体想法。

感谢并原谅我的英语。

3 个答案:

答案 0 :(得分:2)

最后我在全球的asax中做到了。我不知道它是否是最好的方式,但它有效..

这是代码。

protected void Application_Start()
    {
        try
        {

           .
           .
           .
            SetTimer();
        }
        catch (Exception ex)
        {
            ...
        }
    }


    private static void SetTimer()
    {
        DateTime tomorow = DateTime.Now.AddDays(1);
        DateTime midnight = new DateTime(tomorow.Year, tomorow.Month, tomorow.Day, 0, 0, 0);
        TimeSpan d = midnight - DateTime.Now;

        sTimer.Enabled = true;
        sTimer.Interval = d.TotalMilliseconds;
        sTimer.Elapsed += new System.Timers.ElapsedEventHandler(sTimer_Elapsed);
        sTimer.Start();
    }

    static void sTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
    {
        sTimer.Interval = TimeSpan.FromHours(24).TotalMilliseconds;
        db = new CompanyContext();

        //some func
        sendInOutUsers();            
        AlartUsers();
    }

答案 1 :(得分:0)

您需要将调度作为MVC项目之外的单独组件。通常,您将创建一个Windows服务项目,该项目始终在IIS服务器(或其他服务器)上运行,其中包括Timer以在指定的计划中启动不同的任务。您可以在数据库中创建包含计划和其他执行信息的配置文件或表,并从服务中查询此文件或表。

答案 2 :(得分:0)

如何在将在预定时间运行的服务器上使用单独的Windows服务?我亲自实现了这一点,并且效果很好。