如何运行线程直到c#中的条件变为真

我正在编写一个程序,每5分钟发送一次短信。 我想在系统时间是下午6点时停止此操作。 我怎样才能做到这一点? 这是我目前的代码。 我想根据我的上述要求修改它。

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

您可以使用以下条件来检查系统TIME。

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

一般从不使用睡眠是个坏主意,而是使用定时器:

 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 } }