Windows服务与计划任务

时间:2013-05-21 19:21:46

标签: c# service scheduled-tasks

所以这是我第一次以编程方式创建Windows服务或计划任务,我很困惑选择哪一个。我查看了各种文章,例如http://weblogs.asp.net/jgalloway/archive/2005/10/24/428303.aspxscheduled task or windows service等等,但不能真正决定两者之间

以下是我的情景:

我的应用程序将从数据库中获取几个dll的代码路径,使用MSTest.exe执行DLL并将结果记录回Db。这可能每2-3小时重复一次。现在我倾向于预定任务,因为我不必担心与内存相关的问题,但需要一些专家建议。

P.S。 :DLL包含调用各种服务器上部署的应用程序的Web服务的测试方法

提前感谢您的帮助

2 个答案:

答案 0 :(得分:11)

计划任务对您的方案更合适。当操作系统已经提供调度基础架构时,我认为在Windows服务上构建调度机制并不是很有意义。

对于必须随时响应事件而非特定和修复周期的进程,Windows服务更合适。这就是他们一直在运行的原因。一个例子是SQL Server服务。

这个例外可能是需要每隔一秒左右运行一次的任务。在那个角落的情况下,Window Service可能是最好的解决方案。对于您的具体时间表,我毫不怀疑计划任务会更好地适应。

答案 1 :(得分:0)

虽然这篇文章已经有几个月的历史了,但是如果它对“运行用户是否登录”问题对其他人有帮助,可能会有一个解决方案:从控制台项目开始,然后将类型更改为Windows App,如上所述Run code once and exit formless app: Windows Forms or WPF... does it matter?: “如果你从未展示过UI,你应该从WinForms项目开始(WPF项目设置你不想要的额外项目元数据),然后删除对System.Windows.Forms.dll的引用。或者,从控制台项目开始,然后将输出类型更改为Windows应用程序。“