У меня есть около 20 функций, некоторые из них должны быть уволены один раз в секунду, некоторые, 20 раз в секунду и другие два раза в минуту в настоящее время у меня есть что-то вроде этого:C# Правильный способ периодически активизирующих функции
DateTime nowVar = DateTime.Now;
var lastExecutionFunc1 = nowVar;
var lastExecutionFunc2 = nowVar;
var lastExecutionFunc3 = nowVar;
var lastExecutionFunc4 = nowVar;
DateTime _now = DateTime.Now;
if ((_now - lastExecutionFunc1).TotalSeconds >= 0.1)
{
lastExecutionFunc1 = _now;
//dosomething
}
if ((_now - lastExecutionFunc2).TotalSeconds >= 0.5)
{
lastExecutionFunc2 = _now;
//do something else
}
if ((_now - lastExecutionFunc3).TotalSeconds >= 30)
{
lastExecutionFunc3 = _now;
//do something else
}
.....
Хотя это работает, я не могу не думать, что должен быть более элегантный способ сделать это. Создание var для хранения каждого исполнения делает основной вид действительно беспорядочным. Думаю, я мог бы использовать пару, но это тоже было бы не слишком хорошо.
Любые советы?
EDIT: Если вы хотите увидеть, чего я пытаюсь достичь, you can see the whole code here. На линии 525.
Вы можете использовать класс Timer, https://msdn.microsoft.com/en-us/library/system.windows.forms.timer(v=vs.110).aspx – Adil
насчет создания массива функций, которые затем можно напрямую подавать в обратный вызов по таймеру, исходя из возрастающего счетчика? – Robert
Простейшим решением является использование [Timer Class] (https://msdn.microsoft.com/en-us/library/system.timers.timer%28v=vs.110%29.aspx) – shadow