7

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

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

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

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

4

10 回答 10

8

考虑使用Windows 任务计划程序

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

于 2013-01-28T13:12:56.653 回答
7

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

如果您根本无法创建应用程序的“系统版本”,那么我想您有两个选择,两者都非常丑陋:1)创建某种宏脚本而不是您的程序执行,该脚本可以执行程序并发出“点击”,2)通过调用按钮点击处理程序在您的应用程序启动时执行“点击”(可能基于一个参数,使其在执行模式中具有双重性。)

于 2013-01-28T13:13:50.273 回答
2

我认为您也在询问命令行参数传递。请参阅此问题的答案。

特别是,我强烈推荐接受的答案NDesk.Options

于 2013-01-28T13:16:35.570 回答
2

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

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

于 2013-08-06T10:03:36.613 回答
1

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

于 2013-01-28T13:14:46.463 回答
1

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

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

示例:winform.exe /Auto

于 2013-01-28T13:19:48.137 回答
1

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

于 2013-01-28T13:19:48.180 回答
0

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

于 2013-01-28T13:13:01.753 回答
0

为什么不将数据库更新逻辑提取为Windows 服务

您可以将 sql 处理部分分开,并为您的表单应用程序和 Windows 服务DLL使用公共部分。DLL

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

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

于 2013-01-28T13:26:18.057 回答
0

添加参考: Microsoft.Win32.TaskScheduler
然后编写以下代码:

using (TaskService ts = new TaskService())
Microsoft.Win32.TaskScheduler.Task task = ts.GetTask(TaskName); 
task.Run(); //start
task.Stop(); //End
于 2019-07-30T07:48:30.223 回答