我现在想做一个定时器 他可以在某个时刻定时触发这个某个方法,而不是间隔性的触发
   比如我想在每天的15:00触发 改怎么做呢?

解决方案 »

  1.   

    private TimeSpan _fromTimeMergeRoadStated;//下面设置的是6点30开始触发
           _fromTimeMergeRoadStated = new TimeSpan(6, 30, 0);
               TimeSpan tmpTimeSpan = DateTime.Now.TimeOfDay;
                    if (tmpTimeSpan > _fromTimeMergeRoadStated)
    {
    ....
    }
      

  2.   

    Timer只能循环了,等到特定时刻触发事件
      

  3.   

    public void DelayRun(DateTime target, Delegate del)
    {
        new Thread((ThreadStart)delegate
        {
            int tick = (int)(target - DateTime.Now).TotalMilliseconds;
            if (tick < 0) return;//已经过时了。啥都不干
            Thread.Sleep(tick > 0 ? tick : 0);
            this.Invoke(del);//执行操作
        }).Start();
    }public void DelayRun(DateTime target, Delegate del, params object[] parameters)
    {
        new Thread((ThreadStart)delegate
        {
            int tick = (int)(target - DateTime.Now).TotalMilliseconds;
            if (tick < 0) return;//已经过时了。啥都不干
            Thread.Sleep(tick > 0 ? tick : 0);
            this.Invoke(del, parameters);//带参数的执行操作
        }).Start();
    }
    //调用方法
    DateTime target = new DateTime(2010, 8, 16, 14, 42,0);
    DelayRun(target, (Action)delegate { MessageBox.Show("Test"); });
      

  4.   

    谢谢大家 我写好了 用的是在Timer  下找一个时间点儿 然后执行的....