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