Как сделать проверку чего-либо без циклов?

У меня часто встречаются такие ситуации, когда мне нужно что-то проверить. К примеру:

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!");
        }
    }
→ Ссылка