如何将我的 c# 程序作为计划任务运行

Posted

技术标签:

【中文标题】如何将我的 c# 程序作为计划任务运行【英文标题】:How do I run my c# program as a scheduled task 【发布时间】:2013-01-11 20:04:07 【问题描述】:

我对 c# 还是很陌生,所以你必须忍受我。

我开发了一个 Windows 窗体程序,它更新一些 SQL 记录作为我们的一个客户的一天结束的过程。

接下来我需要将程序安装在服务器上,并在程序中模拟一个按钮点击变成定时任务。

我知道如何在启动程序并输入参数的服务器端设置任务。但我不确定我需要在我的程序中包含哪些代码来实现这一点。

【问题讨论】:

【参考方案1】:

考虑使用Windows Task Scheduler。

您可以将您的业务逻辑提取到一个单独的 DLL 并编写一个简单的控制台应用程序,该应用程序将在通过命令行接受参数后运行您的任务。

【讨论】:

【参考方案2】:

我的建议是不要从计划任务中运行基于 GUI/窗口的应用程序 - 这在实践中通常是疯狂的。理想情况下,部署一个基于控制台的应用程序版本,该版本需要执行(可能带有参数参数)并且不需要任何用户(或准用户)交互。

如果您只是无法为您的应用程序创建一个“系统版本”,那么我猜您有两个选择,都非常难看:1) 创建某种宏脚本来代替执行在您的程序中,此脚本可以执行程序并发出“单击”,2)通过调用按钮单击处理程序(可能基于参数以使其具有执行模式的二元性)在您的应用程序启动时执行“单击”。 )

【讨论】:

【参考方案3】:

我认为您也在询问命令行参数传递。查看this question的答案。

特别是,我强烈推荐the accepted answer:NDesk.Options。

【讨论】:

【参考方案4】:

如果是windows应用程序,只需进入bin文件夹,获取可执行文件,最后使用windows schedule task为它安排一个任务,选择exe文件作为你的目标应用程序。

如果是 Web 应用程序,您可能希望将您的代码包含在quartz.net 计划作业中,详细信息请参见quartz.net 网站。

【讨论】:

【参考方案5】:

非常流行的解决方案是 Quartz.NET http://quartznet.sourceforge.net/

【讨论】:

【参考方案6】:

我有类似的任务要做winforms作为windows任务。我所做的是

windows task schedulertask tabRun下放你的exe然后/Auto,它会按计划运行。

示例:winform.exe /Auto

【讨论】:

【参考方案7】:

如果我正确理解了您的问题,您可能会这样做:

Best way to parse command line arguments in C#? -> 检查答案并选择一个库来处理 args 或编写您自己的代码来执行此操作。 如果Creating Scheduled Tasks 存在这些参数,则创建计划任务

【讨论】:

【参考方案8】:

看看Timer类http://msdn.microsoft.com/en-us/library/system.timers.timer(v=vs.110).aspx

【讨论】:

【参考方案9】:

为什么不将您的数据库更新逻辑提取为windows service

您可以将 sql 处理部分隔离在单独的 DLL 中,并为您的表单应用程序和 Windows 服务使用通用的 DLL

一个窗口服务在后台运行,可以在计算机启动时自动启动,可以暂停和重新启动,并且不显示任何用户界面。

此外,您无需安装任何第三方软件,并且可以将窗口服务代码库移植到任何安装了所需版本.Net Framework的Windows机器上。

【讨论】:

【参考方案10】:

添加参考:Microsoft.Win32.TaskScheduler 然后写这段代码:

using (TaskService ts = new TaskService())
Microsoft.Win32.TaskScheduler.Task task = ts.GetTask(TaskName); 
task.Run(); //start
task.Stop(); //End

【讨论】:

以上是关于如何将我的 c# 程序作为计划任务运行的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中列出计划任务

如何区分任务计划程序 1.0 和任务计划程序 2.0?

作为计划任务运行 Visual Basic 脚本询问我要如何打开文件

AutoIt 脚本可以在未登录时作为计划任务运行吗?

C#创建任务计划

将 Microsoft Access 作为计划任务运行后退出