我想在程序中监视每天的中午12点整或每天的傍晚19点整做数据传送,我用了一个Timer1,设置Enabled = true,Interval设置为:60000,即每分钟触发一次,在它的事件代码中这样写:
if (System.DateTime.Now.ToString("HH:mm:ss") == "12:00:00" || System.DateTime.Now.ToString("HH:mm:ss") == "19:00:00")
{
    //这里放传动数据的代码
}不知道这样写能否达到目的?谢谢!

解决方案 »

  1.   

    可以,但存在这危险,因为windows不是实时系统,你设定一分钟,但是并不是正好一分钟就会触发,多数会慢一点,这极有可能不符合这个条件,所以你最好把间隔改短点,然后设置变量来表示是否执行过,加入在条件范围内再次满足时,可以判断这个变量,来决定是否再次执行
      

  2.   

    不可以
    你不能控制你程序启动的时间正好是0分0秒。比如timer启动的时间是12:00:18,一分钟运行一次,你的代码永远不可能被执行。
    if (System.DateTime.Now.ToString("HH:mm") == "12:00" || System.DateTime.Now.ToString("HH:mm") == "19:00")
    把秒忽略掉
      

  3.   

    如果真的严格要求12点整,那么就需要每秒执行一次。不过个人觉得一般没有什么意义。时间间隔设为一分钟,然后
    System.DateTime.Now.ToString("HH:mm") == "12:00" || System.DateTime.Now.ToString("HH:mm:ss") == "19:00"
    这样正常也有问题
      

  4.   

    那我改为这样行不行?
    该窗口设置一个全局变量: string sendState = "";if (System.DateTime.Now.ToString("HH:mm") >= "12:00" && System.DateTime.Now.ToString("HH:mm") < "19:00" && sendState != "12")
    {
        //这里放传动数据的代码
         sendState = "12";
    }
    else if (System.DateTime.Now.ToString("HH:mm") >= "19:00" && sendState == "12")
    {
        //这里放传动数据的代码
         sendState = "19";
    }
      

  5.   

    那我改为这样行不行?
    该窗口设置一个全局变量: string sendState = "";if (System.DateTime.Now.ToString("HH:mm") >= "12:00" && System.DateTime.Now.ToString("HH:mm") < "19:00" && sendState != "12")
    {
        //这里放传动数据的代码
         sendState = "12";
    }
    else if (System.DateTime.Now.ToString("HH:mm") >= "19:00" && sendState == "12")
    {
        //这里放传动数据的代码
         sendState = "19";
    }