如何在c#中运行一个线程,直到一个条件为真

本文关键字:一个 条件 线程 运行 | 更新日期: 2023-09-27 18:06:55

我正在写一个每5分钟发送一次短信的程序。我想在系统时间是下午6点时停止这个。我该怎么做呢?这是我现在的代码。我想根据我的上述要求修改这个

while (true)
{        
        sms.SendSMS();
        Thread.Sleep(30000);

}}).Start();
}

如何在c#中运行一个线程,直到一个条件为真

一般不使用Sleep是坏主意,使用timer代替:

System.Timers.Timer SendSMS = new System.Timers.Timer();        
SendSMS.Interval = 300000;  ///300000ms=5min    
SendSMS.Elapsed += new System.Timers.ElapsedEventHandler(SendSMS_Elapsed);
SendSMS.Enabled=true;
 void SendSMS_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            sms.SendSMS();
        }     

增加第二个计时器,检查时间,并在下午6点停止:

 System.Timers.Timer StopSendSMS = new System.Timers.Timer();        
    StopSendSMS.Interval = 100;      
    StopSendSMS.Elapsed += new System.Timers.ElapsedEventHandler( StopSendSMS_Elapsed);
    StopSendSMS.Enabled=true;

 void StopSendSMS_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
            {
                  if (int(DateTime.Now.Hour)==18))
                   {
                     SendSMS.Enabled=false;
                     StopSendSMS.Enabled=false; ///no need to check anymore
                   }
            }   

您可以使用以下条件查看系统时间。

      `if(DateTime.Now.Hour.ToString("HH") == "18") //Hour is in 24hour format`