.Net длительное запланированное выполнение кода
Сейчас я работаю над парой проектов, в которых мне бы очень хотелось, чтобы был какой-то компонент, который я мог бы указать время и дату, а затем выполнить какой-то метод.
DateTime date = new DateTime(x,x,x,x,x,x);
ScheduledMethod sMethod = new ScheduledMethod(date, [method delegate of some sort]);
\\at the specified date, sMethod invokes [method delegate of some sort]
Я знаю, что могу сделать это с Windows Workflow Foundation как длительный процесс, который хорош для определенных вещей, но есть ли альтернативы? Рабочий процесс не совсем прост с деталями, и было бы неплохо иметь возможность развернуть что-то более простое для легких задач. Примером может служить метод, который проверяет сетевую папку один раз в день и удаляет все файлы, которые старше 30 дней. Я понимаю, что это может быть просто мечтой, но это было бы чрезвычайно полезно для автоматизации определенных повседневных задач по обслуживанию (запланированные операции sql, очистка файловой системы, обычная отправка электронной почты и т. Д.). Это не обязательно должен быть.Net, но это то, откуда я иду. Есть идеи?
4 ответа
Попробуй планировщик задач windows. написать программу на C#, которая выполняет желаемую задачу, а затем запланировать ее выполнение в планировщике заданий с заданными интервалами. для таких вещей, как удаление файлов из папки, это работает очень хорошо.
Вы можете развернуть службу Windows или запланированную задачу Windows.
Также посмотрите этот ТАК вопрос.
Обычно я делаю консольное приложение для задачи и настраиваю его как запланированное задание в Windows. Это обычно отлично работает. Добавьте в приложение приличную регистрацию, чтобы вы могли легко устранять неполадки, если что-то пойдет не так.
Microsoft имеет интерфейс планировщика заданий для неуправляемого кода http://msdn.microsoft.com/en-us/library/aa383614%28v=VS.85%29.aspx. Однако, если вам нужна управляемая библиотека, вы можете использовать оболочку для Microsoft Task Scheduler http://www.codeproject.com/KB/cs/tsnewlib.aspx или корпоративный планировщик заданий для.NET QuartzNet.