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

时间:2014-06-05 10:22:37

标签: c#

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

while (true)
{        
        sms.SendSMS();

        Thread.Sleep(30000);


}}).Start();
}

2 个答案:

答案 0 :(得分:0)

一般情况下从不使用睡眠是个坏主意,请改用计时器:

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
                   }

            }   

答案 1 :(得分:-1)

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

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