主页 > 编程资料 > C# >
发布时间:2015-09-26 作者:网络 阅读:466次

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
{
 ///


 /// Global 的摘要说明。
 ///

 public class Global : System.Web.HttpApplication
 {
  ///
  /// 必需的设计器变量。
  ///

  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 窗体设计器生成的代码
  ///


  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  ///

  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

关键字词: