我做了一个服务,想要让他每天早上10点自动执行,
DateTime now=DateTime.Now;if (now.Hour==10)
{
    Thread thread=new Thread(new ThreadStart(DownLoadFile));
    thread.Start();
}
怎么不行,有没有类似的列子,给看下,谢谢啦。

解决方案 »

  1.   

    1、做个小程序,用Windows的计划任务去执行它
    2、做个Windows服务程序,用Timer控制每天早晨10点执行它
    3、也是Windows服务程序,程序启动先检测是否到早晨10点,然后让线程暂停一段时间再启动检查如果是数据库方面的,可以用SqlServer的作业,去执行存储过程
      

  2.   

    非正解……
    用Timer 并且
    别用 DateTime  
    用 : string hour = System.DateTimeOffset.Now.Hour.ToString();DateTime 只有第一次程序执行的时候就一直是那个值,不会变了。
      

  3.   

    另外你可以用秒做实验,放个两个 TextBox 上去textBox1.Text= DateTimeOffset.Now.Second.ToString();
    textBox2.Text=DateTime.Now.Second.ToString();你会发现问题的……
      

  4.   


            static void Main(string[] args)
            {
                while (true)
                {
                    if (DateTime.Now.Hour >= 10)
                    {
                        //do something...
                        Thread.Sleep(1000 * 60 * 60 * 24);//线程休眠到第二天
                    }
                    else
                    {
                        Thread.Sleep(1000 * 60);//每分钟检查一次时间
                    }
                }
            }
      

  5.   

    用timer就行。
    还有把你的程序放进while(true)循环里应该也能实现这个效果吧
      

  6.   

    if (DateTime.Now.Hour == 10)
    楼上的代码如果需要固定为10点  好象需要修改为这句
    而且建议用单独线程处理
      

  7.   

    Thread th = new Thread(threadStart);
                th.Start();private void threadStart()
    {
       while (true)
                {
                    if (DateTime.Now.Hour == 10)
                    {
                        //do something...
                        DownLoadFile();
                        Thread.Sleep(1000 * 60 * 60 * 24);//线程休眠到第二天
                    }
                    else
                    {
                        Thread.Sleep(1000 * 60);//每分钟检查一次时间
                    }
                }
    }
      

  8.   

    楼上的不行,如果我重启电脑,他又会执行一次,那么我SQL里面就有重复数据
    我是想每天10点执行一次,不是10不让他执行,但是我不知道用timer
      

  9.   

    上面都说出来了,你自己组织下啊
    DateTime   noew= New DateTime(); 
    用while (true)
    {   now=DateTime.Now; 
    }循环拿时间 这个可以扔线程里,让它休眠60秒下面拿now来判断就好了
    if   (now.Hour==10) 

            Thread   thread=new   Thread(new   ThreadStart(DownLoadFile)); 
            thread.Start();