private void FinishTask(ITask task) { var TaskType = task.GetType(); var NextTime = task.NextExecutionTime(); _TaskFactory.DestroyTask(task); var Timer = new Timer(); Timer.Elapsed += (o, e) => { Timer.Dispose(); CreateTask(TaskType); }; Timer.Interval = NextTime.TotalMilliseconds; Timer.Start(); }