Как сделать проверку чего-либо без циклов?
У меня часто встречаются такие ситуации, когда мне нужно что-то проверить. К примеру:
var NextDay = DateTime.Now.AddDays(1);
if (DateTime.Now.Day == NextDay.Day)
{
NextDay = NextDay.AddDays(1);
//.....
}
Чтоб узнать, когда наступит следующий день, мне нужно будет запихнуть этот условный блок в цикл. Но нет ли другого способа? Нельзя ли создать как-нибудь событие, которое будет реагировать в момент наступления "следующего дня"?
Ответы (1 шт):
Автор решения: Tony Sider
→ Ссылка
UPD По факту без цикла на сколько мне известно здесь не обойтись, где-то он всё-равно будет, но могу предложить вынести цикл в другой поток
Если задача выполняется очень редко, то после Invoke() можно добавить ещё System.Threading.Thread.Sleep(); Должно увеличить оптимизацию отключая поток
public delegate void timeEventVoidDelegate();
public static event timeEventVoidDelegate myTimeEvent;
private void Form2_Load(object sender, EventArgs e)
{
myTimeEvent += Form2_myTimeEvent;
Task.Run(() => { while (true) { if ((DateTime.Now.Second == 30) || (DateTime.Now.Second == 0)) myTimeEvent.Invoke(); } });
}
private void Form2_myTimeEvent()
{
MessageBox.Show("BOM BOM MUTHERF*CKER!");
}
}