使用 windows 计划任务及时调用控制台应用程序。这是一种有效的方法吗
Calling a console application on timely basis using windows scheduled task . Is this a valid approach
这是关于ASP.NET MVC 背景的。当我需要及时调用操作方法时,我会使用运行在应用程序池下的 HangFire 等第三部分工具。我想创建一个同步作业,它读取我们的 ERP 系统生成的 .csv 文件并更新我们的自定义数据库。
但我知道将此同步作业作为我的 ASP.NET MVC 中的操作方法并不是正确的做事方式,因为后台作业不应该是我的 Web 应用程序的一部分。
因此,为了处理我的同步工作,我执行了以下操作:
使用 Visual studio 2012 ,我创建了一个新的控制台应用程序,并在其主要方法中编写了如下同步作业:-
class Program
{
static void Main(string[] args)
{
using (Entities sd = new Entities())
{
//code goes here
sd.SaveChanges();
}
}
}
- 如何及时调用这个控制台应用程序?我正在考虑使用 windows 任务调度程序创建一个新任务,该任务将每小时执行一次并调用应用程序,主要是调用 .application 文件?
now my question is how i can call this console application on timely basis? . i am thinking on creating a new task using windows task scheduler , which will be executed each hour and call the application, mainly calls the .application file?
运行 程序是 Windows Task Scheduler (TS) 赖以存在的东西之一。所以是,请务必使用 TS。
使用 TS 的其他好处是:
- 可以指定用户帐号到运行下的进程
- 多种方式来指定任务何时应该触发运行
- 控制任务是否应该的条件机制运行(计算机空闲;节能)
- 以及 运行
时的任务历史记录
替代方案是为 运行 您的应用创建您自己的调度服务,但这种选择 不受欢迎 由于:
- 重新发明轮子
- Windows 充斥着大量的专有任务调度服务,它们基本上都在做同样的事情。
Web 应用程序中的后台作业
虽然可以说 spawn/schedule 背景 thread/worker 项目 ASP.NET 来调用某些 c# 代码,但这里的危险是 IIS 不知道您已经这样做了。由于网络不活动,它可能会决定暂停或回收您的应用程序池,然后您的计划作业将被发送到 void。因此不推荐这样做。
现在您总是可以告诉 IIS 不要让您的应用程序池超时,这样它就不会定期回收,但我怀疑这会导致其他问题。
最好一开始就不要这样做。
但是,ASP.NET 使用任务计划程序 API 将操作安排到 运行 并没有错,比如 控制台应用程序 .
Windows 任务调度程序是调用 .net 控制台应用程序的一种完全有效的方式。我有几个我写的和支持的 运行 多年来没有任何问题。
这是关于ASP.NET MVC 背景的。当我需要及时调用操作方法时,我会使用运行在应用程序池下的 HangFire 等第三部分工具。我想创建一个同步作业,它读取我们的 ERP 系统生成的 .csv 文件并更新我们的自定义数据库。
但我知道将此同步作业作为我的 ASP.NET MVC 中的操作方法并不是正确的做事方式,因为后台作业不应该是我的 Web 应用程序的一部分。
因此,为了处理我的同步工作,我执行了以下操作:
使用 Visual studio 2012 ,我创建了一个新的控制台应用程序,并在其主要方法中编写了如下同步作业:-
class Program { static void Main(string[] args) { using (Entities sd = new Entities()) { //code goes here sd.SaveChanges(); } } }
- 如何及时调用这个控制台应用程序?我正在考虑使用 windows 任务调度程序创建一个新任务,该任务将每小时执行一次并调用应用程序,主要是调用 .application 文件?
now my question is how i can call this console application on timely basis? . i am thinking on creating a new task using windows task scheduler , which will be executed each hour and call the application, mainly calls the .application file?
运行 程序是 Windows Task Scheduler (TS) 赖以存在的东西之一。所以是,请务必使用 TS。
使用 TS 的其他好处是:
- 可以指定用户帐号到运行下的进程
- 多种方式来指定任务何时应该触发运行
- 控制任务是否应该的条件机制运行(计算机空闲;节能)
- 以及 运行 时的任务历史记录
替代方案是为 运行 您的应用创建您自己的调度服务,但这种选择 不受欢迎 由于:
- 重新发明轮子
- Windows 充斥着大量的专有任务调度服务,它们基本上都在做同样的事情。
Web 应用程序中的后台作业
虽然可以说 spawn/schedule 背景 thread/worker 项目 ASP.NET 来调用某些 c# 代码,但这里的危险是 IIS 不知道您已经这样做了。由于网络不活动,它可能会决定暂停或回收您的应用程序池,然后您的计划作业将被发送到 void。因此不推荐这样做。
现在您总是可以告诉 IIS 不要让您的应用程序池超时,这样它就不会定期回收,但我怀疑这会导致其他问题。
最好一开始就不要这样做。
但是,ASP.NET 使用任务计划程序 API 将操作安排到 运行 并没有错,比如 控制台应用程序 .
Windows 任务调度程序是调用 .net 控制台应用程序的一种完全有效的方式。我有几个我写的和支持的 运行 多年来没有任何问题。