如何在c#中运行一个线程,直到一个条件为真
本文关键字:一个 条件 线程 运行 | 更新日期: 2023-09-27 18:06:55
我正在写一个每5分钟发送一次短信的程序。我想在系统时间是下午6点时停止这个。我该怎么做呢?这是我现在的代码。我想根据我的上述要求修改这个
while (true)
{
sms.SendSMS();
Thread.Sleep(30000);
}}).Start();
}
一般不使用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`