我对 c# 还是很陌生,所以你必须忍受我。
我开发了一个 Windows 窗体程序,它更新一些 SQL 记录作为我们的一个客户的一天结束的过程。
下一步是我需要将程序安装在服务器上,并在程序中模拟一个按钮点击,变成一个定时任务。
我知道如何在启动程序并输入参数的服务器端设置任务。但我不确定我需要在我的程序中包含哪些代码来实现这一点。
考虑使用Windows 任务计划程序。
您可以将您的业务逻辑提取到一个单独的 DLL 并编写一个简单的控制台应用程序,该应用程序将在通过命令行接受参数后运行您的任务。
我的建议是不要从计划任务中运行基于 GUI/窗口的应用程序——这在实践中通常是疯狂的。理想情况下,部署一个基于控制台的应用程序版本,该版本需要执行(可能带有参数参数)并且不需要任何用户(或准用户)交互。
如果您根本无法创建应用程序的“系统版本”,那么我想您有两个选择,两者都非常丑陋:1)创建某种宏脚本而不是您的程序执行,该脚本可以执行程序并发出“点击”,2)通过调用按钮点击处理程序在您的应用程序启动时执行“点击”(可能基于一个参数,使其在执行模式中具有双重性。)
我认为您也在询问命令行参数传递。请参阅此问题的答案。
特别是,我强烈推荐接受的答案:NDesk.Options。
如果它是一个windows应用程序,只需转到bin文件夹,获取可执行文件,最后使用windows schedule task为其安排一个任务,并选择exe文件作为您的目标应用程序。
如果它是 Web 应用程序,您可能希望将您的代码包含在 quartz.net 计划的作业中,详细信息在quartz.net 网站上。
非常流行的解决方案是 Quartz.NET http://quartznet.sourceforge.net/
我有类似的任务要做winforms作为windows任务。我所做的是
在windows task scheduler
中task tab
,Run
下放你的exe然后/自动,它将按计划运行。
示例:winform.exe /Auto
如果我正确理解了您的问题,那么您可能会这样做:
为什么不将数据库更新逻辑提取为Windows 服务
您可以将 sql 处理部分分开,并为您的表单应用程序和 Windows 服务DLL
使用公共部分。DLL
一个窗口服务在后台运行,可以在计算机启动时自动启动,可以暂停和重新启动,并且不显示任何用户界面。
此外,您无需安装任何第三方软件,并且可以将窗口服务代码库移植到.Net Framework
安装了所需版本的任何 Windows 机器上。
添加参考: Microsoft.Win32.TaskScheduler
然后编写以下代码:
using (TaskService ts = new TaskService())
Microsoft.Win32.TaskScheduler.Task task = ts.GetTask(TaskName);
task.Run(); //start
task.Stop(); //End