У меня есть метод send()
, который я хочу выполнять / вызывать каждую 1 секунду.Я испытываю трудности с реализацией этого.До сих пор это то, что я придумал в своей основной программе:
bool done = false;
while (!done)
{
string vCurrent = RandomVoltage(220, 240) + "" + RandomCurrent(10, 13);
int seconds = RandomSec();
if (isEven(seconds))
send(vCurrent, "169.254.156.135");//send the string to the ip address
}
Итак, в основном я пытаюсь вызвать мой метод send()
для каждой секунды текущего четного времени, и я пропускаю нечетноесекунд, вот как я попытался реализовать это с помощью моих RandomSec()
и isEven()
методов:
private static readonly object syncLock = new object();
public static int RandomSec()
{
lock (syncLock)
{
return DateTime.Now.Second;
}
}
public static bool isEven(int sec)
{
if ((sec % 2) == 0)
return true;
else return false;
}
Теперь проблема в том, что я запускаю цикл while в моей программе,Мой метод send()
отправляет большой набор строк за 1 секунду, затем делает паузу на 1 секунду, а затем отправляет еще один большой набор сообщений, когда текущая секунда снова равна.Как я могу заставить мою программу выполнять мой метод send()
только ОДИН РАЗ в 1 секунду, чтобы метод send()
отправлял только 1 строку каждую четную секунду, а не 20/30 из них.Могу ли я вызвать мой send()
метод в цикле с контролем времени?Любая помощь с благодарностью.
Заранее спасибо.