Windows服务设置启动时间为每晚22点

问题描述

大神们你们好,之前写了个C#导数据程序,从服务器导数据到本地的文件夹中,生成若干txt文件。但是我想实现每天晚上22点自动运行这个程序怎么办?另外程序中有一个button需要手动点击的,自动运行没法点击这个button如何解决呀?我在网上看到有教学帖做C#的windows服务,然后创建了一个服务,可以随时启动。但是解决不了问题呀?我在服务的Onstart中加了一块代码如下:while(true){stringi;i=DateTime.Now.TimeOfDay.ToString();switch(i)//判断当前时间是否是晚上10点{case("22:00:00"):try{SqlConnectionconn1=newSqlConnection();conn1.ConnectionString="DataSource=.;Database=~;Uid=~;Pwd=~";if(conn1.State==ConnectionState.Closed){conn1.Open();}SqlCommandsqlcmd=newSqlCommand("selectnamefromsys.tableswherenamenotin('C_Batch_Loads','A_Batch_Loads','A_Cases','C_Cases','A_CaseDiaryNotes','C_CaseDiaryNotes')and(namelike'A[_]%'ornamelike'C[_]%')",conn1);SqlDataAdaptersk=newSqlDataAdapter(sqlcmd);DataSetds1=newDataSet();sk.Fill(ds1);DataTabletable=newDataTable();dataGridView1.DataSource=ds1.Tables[0];dataGridView1.SelectionMode=DataGridViewSelectionMode.FullRowSelect;dataGridView1.Columns.Add("time","time");dataGridView1.Columns.Add("Rownum","Rownum");}catch{MessageBox.Show("连接数据库异常,请检查连接条件");}break;}代码如上图,然后我用switchcase判断当前时间是否为晚上10点,然后把之前写的代码都放在case后面,最后加个break.不知道这样可行否?另外我在windowsservice1中添加gridview控件看不了,运行程序的时候会显示启动服务失败。

解决方案

解决方案二:
然后我创建一个windows服务,windowsservice1也启动不了,一直读条。上面写的switchcase应该只是控制case里面的代码吧。跟服务启动应该没有关系的吧
解决方案三:
哪那么巧合就能正好满足case("22:00:00")的条件?你的条件太苛刻了,只要超过1毫秒就不能匹配了。你还是应该根据这个提示,自己好好现象业务逻辑。再说你在服务里边MessageBox.Show这也没有任何意义啊。
解决方案四:
控制面板->管理工具->任务计划程序->(右侧)创建基本任务->运行你的程序
解决方案五:
stringtoday=DateTime.Now.ToString("HH");try{WriteInLog(DateTime.Now+"进行time触发",false);//获取所有用户//如果时间处在4点时间点,将会执行定义的任务if(today=="22"){}然后服务随便找个时间启动。然后22点就执行了/
解决方案六:
标准的计划任务程序,写一个Console程序,放到计划任务中,定时到每天22点执行吧MessageBox.Show,这个放到事件日志里面去,每天检查一下日志看看是不是有出错。如果想再智能一点,出错了就发送邮件或短信或其他消息之类的。
解决方案七:
下面是Insus.NET在项目使用的一个方法,它是在每天7:10处理一个事件:
解决方案八:
当然你可以定义到具体的年,月,日,时,分,秒均行啦!!!
解决方案九:
引用4楼kongwei521的回复:

stringtoday=DateTime.Now.ToString("HH");try{WriteInLog(DateTime.Now+"进行time触发",false);//获取所有用户//如果时间处在4点时间点,将会执行定义的任务if(today=="22"){}然后服务随便找个时间启动。然后22点就执行了/

晕!这会重复执行多少遍啊?!!!!
解决方案十:
你可以在你的服务中设置一个变量保存“上一次执行时间”,例如privatestaticDateTime上次执行时间;

然后在你判断所谓的case("22:00:00"):之前先判断上一次执行时间变量,看看其值是不是小于凌晨0点。如果当天已经执行过,后边的判断就是多余的了。如果其值确实小于当天凌晨0点,那么你只要判断当前时间是不是超过(或者等于)22点,只要“是”就立刻执行你的动作(首先要为这个变量赋值,以免重复进入操作)。因此这里的核心是,不要用“相等”来判断时间。哪有那么巧合的事情“正好在比较当前时间时连一毫秒都不差”呢?这里的核心是用<、>=这样的比较规则,而是用==比较。说得更白一点,就是编程设计要用心理解、提高悟性。
解决方案十一:
而是用==比较-->而并不是用==比较比如说你的程序因为某些“主线程卡顿”或者其他任何原因,在22点零2分才执行判断语句,请问你执行必要的操作吗?肯定要执行。因此用自己悟性而不是靠抄袭别人的代码,你修改自己的业务逻辑描述方式,你会比那些以为给你代码抄写的人提高得更快!

时间: 2024-10-25 03:24:34

Windows服务设置启动时间为每晚22点的相关文章

设置Bitvise Ssh Client为Windows服务

设置Bitvise Ssh Client为Windows服务 Bitvise SSH Client就是原来的Bitvise Tunnelier,是一款功能丰富的 SSH 客户端,用来远程管理 Linux 系统,除了支持比较重要的动态端口转发外,还支持多帐号登录,图形界面的 SFTP,远程桌面等. 现在需要使用NSSM将其变为Windows服务.整理的相关脚本如下: 新建bat文件并运行,内容如下: "C:Program Files (x86)Bitvise SSH Clientnssm.exe&

如何对win7旗舰版中的windows服务启动项顺序进行设置?

  虽然一再的对win7 64位旗舰版下载 iso的windows服务启动项进行精简,但是说来说去,因为很多服务启动项都是涉及到系统的,还是没办法禁用掉,但是大家是否知道,其实这些启动项是可以根据咱们的需求来对他们的启动顺序进行设置的,似乎现实生活中鲜少有用户会使用到这个功能,也许是鲜少有用户知道了解这个功能.那么今天小编就来讲解一下,如何在win7旗舰版中对win7旗舰版中的windows服务启动项顺序进行设置吧! 1.首先,咱们同时按下win7旗舰版键盘上的win+R快捷键打开电脑的运行窗口

设置Windows服务允许进行桌面交互,实现屏幕监控

默认情况下,Windows服务基于安全考虑,是不允许任何服务程序和桌面进行交互的,也就是说,使用任何的Windows Form 的很多特性将会莫名奇妙的不起作用,如进行屏幕截图,或者使用System.Windows.Form.Timer对象也不行.由于Windows服务具有难以调试的特点,如果不注意这点,你反复检查自己的代码,都很难发现问题的所在的,我开始就是摸索了很久才发现,呵呵. Windows服务的优点有:1. 能够自动运行.2. 不要求用户交互.3. 在后台运行. 一般情况下,Windo

用C#开发Windows服务监控系统使用

window|监控 摘要 本文将向你展示如何用C#开发一个Windows服务来记录系统使用情况. 每一个人都想知道他们每天在什么时间启动和关闭自己的系统,以及系统每天运行了多少时间.如果用一个DataGrid控件来显示系统启动.关闭及所消耗的时间将是一个不错的主意. 在本文中,我提供了一种方法来实现这一目标-使用C#开发一个Windows服务.其实,每个人都了解一点Windows服务.但是,为了介绍之目的,我仅尽可能少得解释一下Windows服务.然后,我们来讨论如何设计一个这样的应用程序. 一

借助C++进行Windows开发:Windows服务增强

目录 延迟自动启动服务 改进关机可预见性 失败操作和受控停止 减少权限 保护服务数据 用受限令牌保护其他项目 接收服务通知 后续内容 Windows服务开发的状态自从在 Windows NT 中出现服务以来一直没有较大的改变,但是 Windows Vista 和 Windows Server 2008 打破了这一僵局.这其中的许多功能主要是为了以更简捷的方式生成更安全的服务,但是在与安全性不相关的服务功能中,有些功能是为了提高 Windows 的整体响应能力和可靠性. 延迟自动启动服务 可通过

Visual C#中调用Windows服务初探

visual|window Windows服务是独立于登录用户而工作的Windows应用程序,它通常在计算机启动时开始执行,且常常连续执行,直到计算机关闭为止.像Exchange Server,IIS和杀毒软件等都使用这种方式,这样就可以独立于某一用户而且可以在任何用户登录前来运行,同时也可以服务于所有的进程,从而以一种服务的形式存在. 正因为Windows服务有着这么多的特性,因此,当需要一些特殊功能的时候就可以考虑使用Windows服务来解决问题.比如下面我们要做的这个例子.对于我们这些程序

vb.net中windows服务的创建

window|创建   无论windows服务执行什么样的处理,创建与安装服务的步骤都十分相似.visual studio提供了windows services项目类型,利用它可以迅速创建windows服务,一下介绍简单的步骤: 1)新建项目,在new project对话框中,选择windows服务图标,在对话框name字段输入服务名称,确定.visual studio将显示服务的设计视图. 2)在服务属性里面进行设置:servicebase类的属性如下:               a.aut

用.NET创建Windows服务

window|创建 我们将研究如何创建一个作为Windows服务的应用程序.内容包含什么是Windows服务如何创建.安装和调试它们.会用到System.ServiceProcess.ServiceBase命名空间的类.  什么是Windows服务 Windows服务应用程序是一种需要长期运行的应用程序它对于服务器环境特别适合.它没有用户界面并且也不会产生任何可视输出.任何用户消息都会被写进Windows事件日志.计算机启动时服务会自动开始运行.它们不要用户一定登录才运行它们能在包括这个系统内的

用托管C++编写Windows服务

多年以来,只要提到编写Windows服务,就会想到用Visual C++编写,同时,这也是其中一件C++程序员可以做,而VB程序员不可以做的事情.以前,我们只称其为"服务"或"NT服务",现在,它们被命名为"Windows服务",而且用VB.NET或C#也可以很容易地编写. 但是,如果你想用托管C++来编写呢?毕竟,大多数有经验的Visual C++程序员都会写过一两个服务,也会知道怎样完成一个类似的工程.假设你有一个必须要一直运行以提供服务的程