Как запустить фоновую задачу в определенное время?

Мне нужно запускать мою задачу каждый день в 15:00, но построитель фоновых задач просто берет интервал для повторения задачи. Как этого добиться? (универсальное приложение для Windows 8.1).


person ahmedwahdan    schedule 15.03.2015    source источник
comment
На какую среду вы ориентируетесь? Ваш вопрос слишком общий.   -  person user919426    schedule 15.03.2015
comment
Можно ли сделать отдельную программу для выполнения фоновой задачи? Затем вы можете просто запустить планировщик задач Windows, когда вам это нужно.   -  person Scott Chamberlain    schedule 15.03.2015
comment
возможный дубликат Создание запланированных задач   -  person GregRos    schedule 15.03.2015
comment
Извините за плохой вопрос. Я читал, что запланированные задачи недоступны в WINRT.   -  person ahmedwahdan    schedule 15.03.2015


Ответы (2)


Посмотрите на библиотеку планирования.

Раньше я успешно использовал Quartz: http://www.quartz-scheduler.net/

В противном случае более простое и легкое решение, если оно жизнеспособно, состоит в том, чтобы ваш процесс выполнялся в соответствии с расписанием операционной системы. Windows поддерживает и поощряет планирование задач.

person Michal Ciechan    schedule 15.03.2015

Я рекомендую вам использовать обычный планировщик задач Windows, если это действительно ваша среда. Я бы рассказал вам, как это сделать, но это будет просто повторение предыдущего ответа: Создание запланированных задач< /а>

using System;
using Microsoft.Win32.TaskScheduler;

class Program
{
   static void Main(string[] args)
   {
      // Get the service on the local machine
      using (TaskService ts = new TaskService())
      {
         // Create a new task definition and assign properties
         TaskDefinition td = ts.NewTask();
         td.RegistrationInfo.Description = "Does something";

         // Create a trigger that will fire the task at this time every other day
         td.Triggers.Add(new DailyTrigger { DaysInterval = 2 });

         // Create an action that will launch Notepad whenever the trigger fires
         td.Actions.Add(new ExecAction("notepad.exe", "c:\\test.log", null));

         // Register the task in the root folder
         ts.RootFolder.RegisterTaskDefinition(@"Test", td);

         // Remove the task we just created
         ts.RootFolder.DeleteTask("Test");
      }
   }
}
person GregRos    schedule 15.03.2015
comment
Если это действительно дубликат (среда Windows), вопрос следует пометить, а не копировать ответ. - person Kevin Brown; 15.03.2015
comment
Возможно Вы правы. Я думал, что формулировка вопроса была достаточно другой, чтобы гарантировать другой ответ, но, если подумать, пометка его как дубликата была бы более полезной. - person GregRos; 15.03.2015