public void Execute <T>() where T : IScheduledTask { var scheduledTask = ScheduledTasks.FirstOrDefault(t => t.ScheduledTask.GetType() == typeof(T)); if (scheduledTask == null) { Logger.Error("Unable to find scheduled task of type {0} in Execute.", typeof(T).Name); } else { var type = scheduledTask.ScheduledTask.GetType(); Logger.Info("Queueing task {0}", type.Name); lock (_taskQueue) { if (scheduledTask.State == TaskState.Idle) { Execute(scheduledTask, new TaskExecutionOptions()); } } } }