Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对于在后台运行且没有UI的C程序,我将使用哪种类型的项目?_C#_Asp.net_Winforms_Visual Studio_Scheduled Tasks - Fatal编程技术网

C# 对于在后台运行且没有UI的C程序,我将使用哪种类型的项目?

C# 对于在后台运行且没有UI的C程序,我将使用哪种类型的项目?,c#,asp.net,winforms,visual-studio,scheduled-tasks,C#,Asp.net,Winforms,Visual Studio,Scheduled Tasks,我习惯于制作win表单或基于web的应用程序,通过用户界面启动代码。我需要创建一个程序,在没有任何用户输入的情况下定期运行。我将使用什么类型的VisualStudio项目来创建此项目?在没有UI的情况下如何启动程序 以下是该计划需要做的事情: 可以用C、asp.net和SQL数据库编写 不需要用户输入 定期跑步,即每天下午1点。 在SQL查询上运行存储过程 将SQL查询的结果输出到文本文件 加密文本文件 将几个文本文件压缩在一起 将zip文件发送到URL 我曾想过创建一个win表单,然后让Win

我习惯于制作win表单或基于web的应用程序,通过用户界面启动代码。我需要创建一个程序,在没有任何用户输入的情况下定期运行。我将使用什么类型的VisualStudio项目来创建此项目?在没有UI的情况下如何启动程序

以下是该计划需要做的事情:

可以用C、asp.net和SQL数据库编写 不需要用户输入 定期跑步,即每天下午1点。 在SQL查询上运行存储过程 将SQL查询的结果输出到文本文件 加密文本文件 将几个文本文件压缩在一起 将zip文件发送到URL 我曾想过创建一个win表单,然后让Windows调度任务调用它,但我不确定如何创建一个可以由Windows调度任务调用的应用程序。我还担心Windows任务,因为用户的计算机必须打开。我宁愿使用SQL作业,我对它们比较熟悉,但不确定如何从SQL进行加密和文件管理,也不知道如何创建一个可以被SQL调用的应用程序。我通常有一个从SQL检索数据的web应用程序


正如您所知,这对我来说是新的,所以任何建议,特别是示例和参考资料链接都会非常有用。谢谢。

这听起来像是Windows服务的完美人选

在VisualStudio中,单击文件->新建->项目。 选择Windows桌面模板->并单击Windows服务。 创建服务后,您可以实例化System.Timers.Timer对象并创建以特定间隔运行的事件:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;

namespace My.New.Service
{
    public partial class MyService : ServiceBase
    {
        private System.Timers.Timer _timer;

        public MyService()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            double interval = Double.Parse(ConfigurationManager.AppSettings["WindowsServiceTimer"].ToString());

            _timer = new System.Timers.Timer(interval); //Runs timer every X milliseconds
            _timer.Elapsed += _timer_Elapsed;
            _timer.Start();
        }

        void _timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {

        }

        protected override void OnStop()
        {
        }
    }
}

我不同意Windows服务的答案。虽然这肯定也会奏效,但就我个人而言,我会使用计划任务:

我还没有亲自测试过,这里有一篇文章介绍如何在命令窗口不显示的情况下运行计划任务:


评论中建议使用SQL Server的计划作业对我来说也很合理。

为什么要为没有GUI的应用程序创建Windows窗体?创建控制台应用程序或Windows服务。我还担心Windows任务,因为用户的计算机必须打开-不,无论是否有人登录,都可以选择运行任务…我将创建一个服务。它在计算机启动时启动,无论是否有人登录。如果您有权访问SQL Server,一种常见的模式是使用SQL作业代理来运行编排这些任务的SSIS包。否则最好的方法可能是windows服务。windows服务。。。。这样,即使没有人登录机器,它也会运行。它可以在机器启动时自动启动,也可以从服务控制管理器SCM手动启动,在指定的服务帐户下运行,并且可以编程启动另一段代码,例如在您想要的任何预定日期/时间在引用的dll中启动。感谢链接。我的C项目会是什么样子?也许是一个没有任何ui的赢单?我将如何启动这样一个计划?例如,它通常以index.html开头,但如果没有html或其他ui,程序的开头是什么?可能是控制台应用程序。有一些方法可以运行控制台应用程序而不实际显示控制台窗口,从用户的角度来看,这显然是非常理想的。然后将可执行文件设为计划任务,Windows将在指定的时间自动为您启动该任务。唯一需要注意的是——我已经有一段时间没有写过了,但最后我检查了一下,关于确切的开始时间,他们实际保证的精度是有限制的,请查看文档,了解他们保证的准确程度。谢谢。这看起来像一个很好的计时器,但是我应该在哪里调用主项目来开始我需要做的文件处理呢?例如,程序通常从index.html开始,但是我如何启动一个没有这样开头的程序呢?当你安装WIndows服务时,它将自动运行OnStart方法,该方法将注册一个计时器,计时器将每X毫秒运行一次。除非重新启动服务器或手动停止服务,否则该服务将一直运行。请看下面的有关如何创建Windows服务的分步指南-