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

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

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

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

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

【问题讨论】:

    标签: c# .net


    【解决方案1】:

    考虑使用Windows Task Scheduler

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

    【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      特别是,我强烈推荐the accepted answerNDesk.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】:

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

              【讨论】:

                【解决方案8】:
                【解决方案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
                  

                  【讨论】:

                    猜你喜欢
                    • 2012-08-15
                    • 1970-01-01
                    • 2013-12-13
                    • 2010-09-22
                    • 2018-02-02
                    • 2014-12-19
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多