最近写了一个winform程序,需要每天在用户指定的时间向服务器获取数据,比如说每天早上的八点半,到八点半时程序执行获取数据的方法,请问我怎么在指定的时间到时触发获取数据的方法呢?timer好像是每隔一段时间执行一个方法,请高手帮助下,谢谢!

解决方案 »

  1.   

    DateTime currentTime = DateTime.Now; 
    可以获取当前时间年月日时分秒都行
    currentTime.Minute //分不过让timer运行24小时,每秒判断,就得很那个
      

  2.   

    先定义一个string time按时间格式定成8点
         用timer每隔一秒用datetime获取一次的本机的时间再把转换成string型,要和你上面定义的时间格式一致,用if判断,如果等于上面定义的string time就执行函数。
      

  3.   

    算一下现在离该执行的时间还有多少,直接sleep多长时间,如果计算机cpu符合不高的话,误差不超过2s
      

  4.   

    程序执行时记录当前的时间,然后计算出到指定的时间的间隔,将timer的interval设为这个间隔做你指定的任务.
    另外在WndProc中检测是否有WM_TIMECHANGE消息产生,有就说明有人修改了系统时间,那你记下当前的时间,重新计算间隔,重新设置timer的interval就可以了,占用资源的也很少.
      

  5.   

    不用定时器你怎么定时接收,定时器影响不大。private void button1_Click(object sender, EventArgs e)
    {
        timer1.Interval = 500;
        timer1.Start();
    }string lastRunTime = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd");
    private void timer1_Tick(object sender, EventArgs e)
    {
        DateTime dtNow=DateTime.Now ;
        if (DateTime.Now.ToString("yyyy-MM-dd") > lastRunTime && DateTime.Now.Hour = 8)
        {
            lastRunTime = DateTime.Now.ToString("yyyy-MM-dd");        // 获取数据
        }
    }
      

  6.   

    windows服务定时执行

    System.Timers.Timer myTimer = new System.Timers.Timer();
    myTimer.Interval = 1000;
    myTimer.Enabled = true;
    myTimer.Elapsed += new System.Timers.ElapsedEventHandler(OnTimedEvent);
    private static void OnTimedEvent(object source, System.Timers.ElapsedEventArgs e)
     {
    }
      

  7.   

    如果只是关注在全天的非运行时间里定时器对系统的影响,那么实现起来很简单,两级定时器,每一级全天运行,时长很长,设为系统允许的最长时间,假设为 X 分钟一次。当该定时器发现与应运行时间小于 Y 分钟(y < X)时,则二级定时器开机,它的时长设定为需求所规定的精度。当软件完成时,关闭二级,开启一级。
      

  8.   

    我觉得可以这样,先程序启动的时候获取系统时间再化成秒,在把你需要程序启动时间化成秒,然后相减获得相差时间,在定义个TIMER设定过多少秒后执行你的代码
      

  9.   

    timer控件不会影响太多的性能,可以启动单独的线程进行定时判断
      

  10.   

    基本上就是用Timer,如果你的定时不需要精确到秒,你可以把Timer时间差距调成1分钟(60000),基本上不占用什么资源
      

  11.   


    公司领导每天都需要一些报表
    开发的C#程序只要能够实现这抓报表的功能就行了然后就是用WINDOWS自己带的计划任务,想安排在什么时候执行都可以计划任务完全可以实现楼主想要的
      

  12.   

    1. 寫一個控制台程序
    2. 控制面版-->計劃任務-->新建任務-->運行控制台程序
      

  13.   

    我有一个更好的办法,程序启动时,先将当前时间和你下一次需要执行的时间相减,得出秒数。
    然后将timer的间隔时间设为这个数,下一次执行方法时,自然timer的间隔时间要设置为24小时了。