如何在c#asp.net应用程序中每两小时安排一次任务

如何在c#asp.net应用程序中每两小时安排一次任务,c#,asp.net-mvc,parallel-processing,task,C#,Asp.net Mvc,Parallel Processing,Task,我有一个场景,我必须将本地数据库同步到在线数据库。我正在用微软同步框架做这件事。现在,我想在我的web c#应用程序中执行此函数,以便每2小时执行一次(无窗口调度程序)。我怎么能做到?请给出一个代码示例,因为我是这方面的新手。 我已经在Hari建议的应用程序中使用了,它正在运行。第一次代码执行正常,但当它到达下一个时间戳时,输出窗口中会显示一条消息“线程0x22d4已退出,代码为0(0x0)”。在未完成任何工作的情况下,当时间到来时,它会一次又一次地显示相同的消息,并且未完成任何工作。我是线程新

我有一个场景,我必须将本地数据库同步到在线数据库。我正在用微软同步框架做这件事。现在,我想在我的web c#应用程序中执行此函数,以便每2小时执行一次(无窗口调度程序)。我怎么能做到?请给出一个代码示例,因为我是这方面的新手。
我已经在Hari建议的应用程序中使用了,它正在运行。第一次代码执行正常,但当它到达下一个时间戳时,输出窗口中会显示一条消息“线程0x22d4已退出,代码为0(0x0)”。在未完成任何工作的情况下,当时间到来时,它会一次又一次地显示相同的消息,并且未完成任何工作。我是线程新手,因此,我想我缺少了一些允许此线程的设置。请问有人能帮忙吗

在这种情况下,您可以采取两种方法

1。专用在线CRON作业(推荐): 您可以创建一个单独的CRON作业,这可以是Azure Web作业,并相应地安排它。您可以移动代码将DB同步到这个CRON作业中,然后忘记它,它将每2小时执行一次,然后进行同步

2。在ASP.NET Web应用程序中编写调度程序作业: 您可以使用.Net Framework编写一个简单的调度程序作业,并相应地对其进行调度,然后使用Global.asax注册它,并让它每2小时运行一次

我发现了一个链接,它用一个代码示例演示了第二种方法:

问候,
Hari

毫无疑问,您需要某种调度机制和操作系统级服务来保持调度引擎的活力。我的建议是创建一个调度引擎,您可以使用调度引擎来调度任务。

我同意@@Hari Govind。如果可以使用Microsoft azure,则可以使用一些crown表达式创建WebJob,通过该表达式,您可以每两小时运行一次任务。

您可以使用windows服务来完成此操作,并自行处理调度


另一种选择是使用Hangfire()在web应用程序中运行重复的后台任务。

您考虑过使用在线CRON作业吗?这在您的场景中可以接受吗?您可以使用在线服务,该服务将在2小时后调用控制器操作,并在操作时同步数据库。我已经用过了。请加上这个作为评论,作为我的答案,而不是作为问题的答案。谢谢兄弟,这帮了我很大的忙,解决了我一直在努力解决的问题。我用了第二种选择。欢迎阿斯法兹,但是你还是应该考虑升级到第一个建议。这是一个很好的解决方案,但在我第一次运行应用程序时,它工作得很好,但在下次输出窗口出现消息时,“线程0x3b80已退出,代码为0(0x0)”。没有工作做。我认为线程是不允许执行的。是的,可能是因为一旦web应用程序完成所有操作,就会为它释放资源。要测试这一点,请从web应用程序启动正在执行的方法,然后检查调度程序是否被触发。换言之,保持应用程序处于活动状态,那么调度程序就会工作。