C#预定系列任务

Lou*_*ton 5 c# asp.net sleep scheduled-tasks

我正在将Classic ASP/VBScript应用程序转换为C#/ ASP.Net.应用程序的VBScript部分是在特定日期每月执行的一系列单独脚本,每个单独的任务都在Windows Scheduler中设置.大约有35个任务包括数据库插入(保存月度历史数据,保存汇总计费数据)以及将一系列Crystal Reports导出为PDF和Excel.每个任务的安排距离大约一分钟,因为我不希望同时请求压倒数据库服务器.

当我在C#中使用它时,我想知道在一个应用程序中是否有一种方法,而不是我使用VBScript的单独脚本方法.我对C#很满意,因为我在过去一年左右的时间里一直用它将应用程序的网站部分转换为ASP.Net MVC,但我没有C#中定时事件的经验.我正在考虑通过为每个任务创建一个单独的函数来解决这个问题,在每个任务之间保持休眠状态,以便在继续执行下一个任务之前有足够的时间进行数据库处理.类似于以下内容:

p.DoTask1();
Thread.Sleep(60000);
p.DoTask2();
Thread.Sleep(60000);
p.DoTask3();
Thread.Sleep(60000);
etc ...
Run Code Online (Sandbox Code Playgroud)

这将包含在一个控制台应用程序中,该应用程序本身将在Windows Scheduler中设置.

这是一个合理的方法吗?有更好的方法吗?我读过有关计时器和任务的内容,但我不确定它们是否适合我想要完成的任务.

Ami*_*ble 2

您可以使用Task.ContinueWith在前一个任务完成后触发每个任务。有关更多详细信息,请参阅此相关答案。

数据库查询返回受影响的行,这就是您告诉数据库已完成运行您执行的查询的方式,而不仅仅是将其传递给数据库。

我认为使用这样的方法相对于简单地休眠线程的优点是,您永远不会同时运行多个任务,并且任务之间不会有停机时间。

这有多重要取决于您对情况的更深入了解。