private void On_DelayTimer_Tick(object sender, EventArgs e) { DelayTask currentTask = _TaskQueue[_CurrentTaskIndex]; if (currentTask.CanRun == null) { RunTask(); } else if (currentTask.MaxAttempts > 0) { currentTask.AttemptCount++; if (currentTask.CanRun() || currentTask.AttemptCount >= currentTask.MaxAttempts) { RunTask(); } } else if (currentTask.CanRun()) { RunTask(); } }