C# 对于在后台运行且没有UI的C程序,我将使用哪种类型的项目?
我习惯于制作win表单或基于web的应用程序,通过用户界面启动代码。我需要创建一个程序,在没有任何用户输入的情况下定期运行。我将使用什么类型的VisualStudio项目来创建此项目?在没有UI的情况下如何启动程序 以下是该计划需要做的事情: 可以用C、asp.net和SQL数据库编写 不需要用户输入 定期跑步,即每天下午1点。 在SQL查询上运行存储过程 将SQL查询的结果输出到文本文件 加密文本文件 将几个文本文件压缩在一起 将zip文件发送到URL 我曾想过创建一个win表单,然后让Windows调度任务调用它,但我不确定如何创建一个可以由Windows调度任务调用的应用程序。我还担心Windows任务,因为用户的计算机必须打开。我宁愿使用SQL作业,我对它们比较熟悉,但不确定如何从SQL进行加密和文件管理,也不知道如何创建一个可以被SQL调用的应用程序。我通常有一个从SQL检索数据的web应用程序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
正如您所知,这对我来说是新的,所以任何建议,特别是示例和参考资料链接都会非常有用。谢谢。这听起来像是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服务的分步指南-