C#如何定时执行程序(例如每天晚上12:00)

程序|定时|执行

C#如何定时执行程序(例如每天晚上12:00)
--------------------------------------------------------------------------------

类似于java里面的Timer.Schedule  TimeTask
谢谢

--------------------------------------------------------------------------------

c#也有timer~~
System.Timer
或者是 System.Theading.Timer
具体用法可以查询下msdn

--------------------------------------------------------------------------------

使用Timer
System.Timers.Timer aTimer = new System.Timers.Timer();
public RechargeFrm()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
components=null;
AutoTime.SelectedIndex=0;
aTimer.Elapsed+=new ElapsedEventHandler(OnTimedEvent);
// Create a new Timer with Interval set to 3 seconds.
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}

--------------------------------------------------------------------------------

// Only raise the event the first time Interval elapses.
aTimer.AutoReset = true;
aTimer.Enabled = flag;
       //aTimer.Interval=Int32.Parse(AutoTime.SelectedItem.ToString())*300;//9s
               aTimer.Interval=Int32.Parse(AutoTime.SelectedItem.ToString())*1000*60;//30m
//Console.WriteLine("Press \'q\' to quit the sample.");
//while(Console.Read()!='q');

--------------------------------------------------------------------------------

c#也有Timer,另外也可以用Thread,或者windows的计划任务
private Timer  _timer;
private int _Interval=30000;
_timer = new Timer();
_timer.Enabled = true;
_timer.Interval = _Interval;
_timer.Elapsed += new ElapsedEventHandler(Timer_Elapsed);
private void Timer_Elapsed(object sender, ElapsedEventArgs e)
{
                       //todo something
}

--------------------------------------------------------------------------------

最简便的方法就是将定时执行交给Windows的计划任务来完成;
或者实现一个Windows服务

--------------------------------------------------------------------------------

Windows的计划任务是个不错的方法!

--------------------------------------------------------------------------------

那如何指定每天晚上12:00执行?
或者说晚上12:00第一次执行,然后每3小时执行一次

--------------------------------------------------------------------------------

我现在需要指定 第一次程序执行的具体时间

--------------------------------------------------------------------------------

上面的方法都是延迟在什么时候发生的,楼主要的是”按时“执行的,
UP一下。

--------------------------------------------------------------------------------

用计划任务不就可以啦?自己写的话要写windows服务。

--------------------------------------------------------------------------------

还是timer控制比较好吧.

--------------------------------------------------------------------------------

ohyear()理解我的意思了
计划任务根本不可行,因为我的应用是asp.net,而且是放在虚拟主机上
timer控制只能实现定时执行,不能指定具体开始执行的时间,例如晚上12:00开始执行

--------------------------------------------------------------------------------

stringCurrTime=System.DateTime.Now.ToShortTimeString();
string s="12:00";
if( CurrTime==s)
  {  //程序执行代码
  }

--------------------------------------------------------------------------------

xjpeng(海风) 的改一下:
private Timer  _timer;
private int _Interval=30000;
_timer = new Timer();
_timer.Enabled = true;
_timer.Interval = _Interval;
_timer.Elapsed += new ElapsedEventHandler(Timer_Elapsed);
private void Timer_Elapsed(object sender, ElapsedEventArgs e)
{
                       //todo something
}
在todo something那里写下面的:
stringCurrTime=System.DateTime.Now.ToShortTimeString();
string s="12:00";
if( CurrTime==s)
  {  //程序执行代码
  }
这样应该可以了吧?

--------------------------------------------------------------------------------

UP

--------------------------------------------------------------------------------

mark

--------------------------------------------------------------------------------

最简便的方法就是将定时执行交给Windows的计划任务来完成;
或者实现一个Windows服务
----------------------------------------------------------
how to implement the  windows servic?
My email is: lalac@163.com
please contact me if you know it!
Thank you

--------------------------------------------------------------------------------

学习

--------------------------------------------------------------------------------

得到时间的办法可以执行
要是此时c#程序已经关闭了呢?怎么得到时间

--------------------------------------------------------------------------------

还是只能加入计划任务吧

--------------------------------------------------------------------------------

egxsun():
这样子可行是可行,程序看上去总是有点土
看来.net的类库里面没提供类似于java的方法

--------------------------------------------------------------------------------

关注!

--------------------------------------------------------------------------------

关注。。。
同样的问题:
     如果机器程序都关闭了,system.time还能取得吗?

--------------------------------------------------------------------------------

up

--------------------------------------------------------------------------------

asp.net做不了。IIS端不能主动做任何事的。要不你就在自己机器上写个计划任务每天定时去请求那个虚拟主机一下,让它执行事先写好的任务。
所谓定时12点一般也不过是用Timer,隔个几秒钟去问一下系统到没到12点啊?到了就执行这种。

--------------------------------------------------------------------------------

www.moblog.net.cn/sunshine.com这个软件定时任务 功能 而且是 不用编译入程序 直接用反射调用你的dll

--------------------------------------------------------------------------------

up

--------------------------------------------------------------------------------

MSDN

--------------------------------------------------------------------------------

直接用C#自己的Timer类就完全可以实现的?gt;>N乙丫芎玫目刂屏耍?nbsp;而且是很复杂的控制。没有问题的。

--------------------------------------------------------------------------------

调用外部命令我知道~用at 命令
具体用法你加个/? 看下帮助!

--------------------------------------------------------------------------------

虚拟主机吗?asp.net可不行

--------------------------------------------------------------------------------

关注

--------------------------------------------------------------------------------

还是做个启动服务

--------------------------------------------------------------------------------

我一直用Windows计划任务进行自动记费系统的运行!效果很好!

--------------------------------------------------------------------------------

gz

--------------------------------------------------------------------------------

控制面板-〉任务计划-〉添加任务-〉选择你的程序,设置时间

--------------------------------------------------------------------------------

学习

--------------------------------------------------------------------------------

使用windows自己的东西

--------------------------------------------------------------------------------

windows service
windows schedule
sql dts job
...

--------------------------------------------------------------------------------

最简单的方法~把你要执行的程序语句写在一个事件里面(就象button_onClick),然后用Timer的Tick调用那个事件就可以了~(当然你要给Timer的Interval属性赋上时间它是以毫秒计算的)用Timer的Enabled
来控制你是否执行你的事件~
不知是否对你有帮助~我就是这么用的~呵呵~

--------------------------------------------------------------------------------

写到计划任务里面去嘛

我在用C#.net开发BS结构程序中遇到一个问题,怎样能够不打开页面的情况下查询数据库并执行特定的操作,经过网上查询和试验得出如下代码

更改 Global.asax.cs 文件如下

using System;
using System.Collections;
using System.ComponentModel;
using System.Web;
using System.Web.SessionState;
using System.Timers;
using System.Data;
using System.Data.SqlClient;

namespace SMS_joke
{
 /// <summary>
 /// Global 的摘要说明。
 /// </summary>
 public class Global : System.Web.HttpApplication
 {
  /// <summary>
  /// 必需的设计器变量。
  /// </summary>
  private System.ComponentModel.IContainer components = null;

  public Global()
  {
   InitializeComponent();
  }
 
  protected void Application_Start(Object sender, EventArgs e)
  {
   SetTimer();
  }
 
  protected void Session_Start(Object sender, EventArgs e)
  {

  }

  protected void Application_BeginRequest(Object sender, EventArgs e)
  {

  }

  protected void Application_EndRequest(Object sender, EventArgs e)
  {

  }

  protected void Application_AuthenticateRequest(Object sender, EventArgs e)
  {

  }

  protected void Application_Error(Object sender, EventArgs e)
  {

  }

  protected void Session_End(Object sender, EventArgs e)
  {

  }

  protected void Application_End(Object sender, EventArgs e)
  {

  }
  public static void SetTimer()
  {
   System.Timers.Timer aTimer = new System.Timers.Timer();

   aTimer.Elapsed += new ElapsedEventHandler(OnTimer);

   aTimer.Interval = 5000;
   aTimer.Enabled = true;
  }

  public static void OnTimer(Object source, ElapsedEventArgs e)
  {
   System.Data.SqlClient.SqlConnection sqlConnection1;
   System.Data.SqlClient.SqlCommand    sqlCommand1;
   string  customSetting  =  System.Configuration.ConfigurationSettings.AppSettings["SqlStr"];
   sqlConnection1 = new SqlConnection();
   sqlConnection1.ConnectionString = customSetting ;
   sqlConnection1.Open();
   string str = "UPDATE TABLE1 SET js = js + 1 " ;

   sqlCommand1 = new SqlCommand(str,sqlConnection1) ;
   sqlCommand1.ExecuteNonQuery();

   sqlConnection1.Close();
 
  }
  #region Web 窗体设计器生成的代码
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {   
   this.components = new System.ComponentModel.Container();
  }
  #endregion
 }
}

 

http://www.zhinest.com/document/web/200572092418.htm
http://www.rsblog.net/user1/3/archives/2005/265.html
http://blog.joycode.com/percyboy/archive/2004/08/21/31240.aspx
http://blog.joycode.com/yaodong/articles/25845.aspx

时间: 2024-08-18 16:59:13

C#如何定时执行程序(例如每天晚上12:00)的相关文章

求spring 定时器 每天上午8点到晚上12点每10分钟运行一次定时规则

问题描述 求spring 定时器 每天上午8点到晚上12点每10分钟运行一次定时规则<property name="cronExpression" value="0 0/10 8-23 * * ?" />我是这样写的,无效ing求高手指正....谢谢 解决方案 贴下其他配置看看呢,单看<property name="cronExpression" value="0 0/10 8-23 * * ?" />

Asp.net定时执行程序

 用Timer解决问题的思路很简单,首先设定Timer类的Interval属性(单位是毫秒),也就是时间间隔:然后在Timer的Elapsed的事件里写执行代码,每过一个设置好的Interval时间间隔,将执行一次Elapsed中的事件 (这和VB程序中的Timer控件基本没有区别). 那知道了用什么类,这些代码要写在哪里呢?把代码写在Global.asax件中,在VS的项目上右键,点添加-->新建项,选"全局应用程序类",项目中就会有Global.asax文件了. 为了表达清楚

IIS应用池回收造成Application_Start中定时执行程序停止的问题的解决方法_实用技巧

而这段时间又没有人再次访问网站,结果在Application_Start中的定时执行程序代码就没有再执行,在网上搜索一番,找到了解决办法,现和大家一起分享交流,原理就是在应用程序结束时发出一个Web请求访问网站,启动Application_Start. 复制代码 代码如下: void Application_End(object sender, EventArgs e) { // 在应用程序关闭时运行的代码 //解决应用池回收问题 System.Threading.Thread.Sleep(50

System.Timers.Timer定时执行程序示例代码_实用技巧

System.Timers.Timer 定时执行程序 复制代码 代码如下: System.Timers.Timer t = new System.Timers.Timer(5000); //设置时间间隔为5秒 private void Form1_Load(object sender, EventArgs e) { t.Elapsed += new System.Timers.ElapsedEventHandler(Timer_TimesUp); t.AutoReset = false; //每

asp.net里面要实现每天晚上12点读取数据,更添加一条新记录要怎么实现呢?

问题描述 asp.net里面要实现每天晚上12点读取数据,更添加一条新记录要怎么实现呢? 解决方案 解决方案二:sql2000执行作业解决方案三:一直开着这个页面用ajax访问服务器(查询"selectgetdate()")如果返回的结果的时间部分是12:00:00则向数据库插入新记录解决方案四:应该是00:00:00ps:回1楼的楼主说的是用asp.net实现解决方案五:不知道要怎么实现,请帮忙哦.这样服务器是不是要一直开着.然后定义一个系统什么服务之类的,一到时候就运行指定的界面呢

仅1999元 40寸小米电视2今日中午12:00首发开卖

  3月24日下午2点,小米新品,新版小米电视2正式发布,售价1999元,堪称性价比之王.采用全球唯一10代线夏普SDPX-Gen超晶屏,夏普SDPX-Gen超晶屏具有5000:1的超高静态对比度和6毫秒的超快响应速度,搭配瑞仪光电的顶级背光模组,组成一个完美的屏幕模组. 根据小米官方公布的数据,截止昨天12点,已经有超过60万用户成功预约新品小米电视. 今天中午12:00,这款电视将迎来首发开卖 ,已经预约的用户届时可以到小米官网抢购. 据了解,40寸小米电视2采用的是夏普原装的SDP超晶屏,

Opera 12.00 Beta发布 多功能网页浏览器

Opera 是一款最受欢迎的多功能网页浏览器,具有速度快.节省系统资源.订制能力强.安全性高以及体积小等特点.它的主要功能包括:弹出窗口拦截.标签浏览.综合搜索.http://www.aliyun.com/zixun/aggregation/17937.html">密码管理器.鼠标浏览.本机可伸缩矢量图形(SVG)的支持.电子邮件程序.RSS新闻,以及IRC聊天. Opera 12.00 Beta该版本插件现在增加了稳定性和安全性的独立进程执行.皮肤替换了一个新的主题系统.改进了地址栏更好

SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间。

大多数情况是说起来sql语句里的时间字段的赋值为空. 跟踪一下参数,查看是否赋值.   由于在数据库中DateTime类型字段,最小值1/1/1753 12:00:00,而.NET Framework中,DateTime类型,最小值为1/1/0001 0:00:00,显然,超出了Sql的值的最小范围,导致数据溢出的错误.   本文参考:http://blog.csdn.net/aspnet2002web/article/details/6063812

FreeBSD定时执行程序(cron)

Unix系统提供了cron和at命令,使系统和用户可以定时运行一定的程序,而不需手工启动. 使用cron用于周期性的执行一个命令,为了使用它,必须编辑crontab文件.系统缺省的/etc/crontab 文件为: # /etc/crontab - root's crontab for FreeBSD # # $Id: crontab,v 1.13 1996/01/06 22:21:37 ache Exp $ # From: Id: crontab,v 1.6 1993/05/31 02:03: