2016-08-01 1 views
1

Я привык создавать формы выигрыша или веб-приложения, которые запускают код через пользовательский интерфейс. Мне нужно создать программу, которая выполняется с регулярными интервалами без ввода пользователем. Какой тип проекта Visual Studio я бы использовал для создания этого? Как запустить программу без пользовательского интерфейса?Какой тип проекта я использовал бы для программы на C#, которая работает в фоновом режиме без интерфейса?

Вот что программа будет нужно сделать:

  • быть написан на C#, ASP.NET с базой данных SQL
  • не требует ввода данных пользователя
  • Запуска на регулярные промежутки времени (например, каждый день в 1 пм)
  • Выполнить хранимые процедуры на SQL запросе
  • Возьмите результаты запроса и вывода SQL в текстовый файл
  • зашифровать текстовый файл
  • Zip несколько текстовых файлов вместе
  • Отправить почтовый файл в URL

Я думал о создании формы выигрыша, а затем с запланированная задача Windows, назвать его, но я не знаю, как для создания приложения, которое может быть вызвано запланированной задачей Windows. Я также обеспокоен тем, что у меня есть задача Windows, потому что компьютер пользователя должен быть включен. Я бы предпочел использовать SQL-задание (я больше знаком с ними), но я не уверен, как делать шифрование и управление файлами из SQL и не знаю, как создать приложение, которое может вызываться SQL (я обычно иметь веб-приложение, которое извлекает данные из SQL).

Как вы можете сказать, это ново для меня, поэтому любые предложения (особенно образцы и ссылки на ресурсы) были бы очень полезными. Спасибо.

+3

Почему создание формы Windows для приложения без GUI? Создайте консольное приложение или службу Windows. «Я также обеспокоен тем, что у меня есть задача Windows, потому что компьютер пользователя должен быть включен» - нет, есть возможность запускать задачу независимо от того, кто-то вошел в систему или нет ... – Alex

+1

Я бы создал сервис.Он запускается, когда компьютер запускается независимо от того, когда кто-то вошел в систему или нет. – GuidoG

+4

Если у вас есть доступ к SQL Server, общий шаблон заключается в использовании агента задания SQL для запуска пакета SSIS, который организует эти задачи. В противном случае лучшим способом, вероятно, является служба Windows. –

ответ

1

Это звучит как идеальный кандидат на службу Windows.

  • В Visual Studio нажмите Файл -> Создать -> Проект.
  • Выберите шаблон «Рабочий стол Windows» -> и нажмите «Сервис Windows».

После того, как услуга будет создан, Вы можете создать экземпляр System.Timers.Timer объекта и создать событие, которое будет работать на определенном интервале:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Configuration; 
using System.Linq; 
using System.ServiceProcess; 
using System.Text; 
using System.Threading.Tasks; 

namespace My.New.Service 
{ 
    public partial class MyService : ServiceBase 
    { 
     private System.Timers.Timer _timer; 

     public MyService() 
     { 
      InitializeComponent(); 
     } 

     protected override void OnStart(string[] args) 
     { 
      double interval = Double.Parse(ConfigurationManager.AppSettings["WindowsServiceTimer"].ToString()); 

      _timer = new System.Timers.Timer(interval); //Runs timer every X milliseconds 
      _timer.Elapsed += _timer_Elapsed; 
      _timer.Start(); 
     } 

     void _timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) 
     { 

     } 

     protected override void OnStop() 
     { 
     } 
    } 
} 
+0

Спасибо. Это похоже на хороший таймер, но где я могу назвать основной проект для начала обработки файлов, который мне нужно сделать? Как правило, программа запускается с index.html, например, но как я могу запустить программу без такого начала? – boilers222

+0

Когда вы устанавливаете WIndows Service, он автоматически запускает метод OnStart(), который регистрирует таймер, и таймер будет запускать каждый X-миллисекунд. Служба будет работать все время, если сервер не будет перезапущен или служба sis вручную остановлено. Посмотрите здесь, пошаговое руководство по созданию службы Windows. https://msdn.microsoft.com/en-us/library/zt39148a(v=vs.110).aspx –

2

я собираюсь не согласен с ответом службы Windows. Несмотря на то, что, безусловно, работать тоже, лично я хотел бы использовать запланированное задание: https://technet.microsoft.com/en-us/library/cc748993(v=ws.11).aspx

Я не проверял это лично, вот статья о том, как выполнить запланированное задание без команды окна с указанием: http://www.howtogeek.com/tips/how-to-run-a-scheduled-task-without-a-command-window-appearing/

Рекомендация в комментариях использовать запланированное задание SQL Server звучит разумно для меня тоже.

+0

Спасибо за ссылки. Как бы выглядел мой проект C#? Может быть, форма выигрыша, которая не имела к ней никакого отношения? Как мне начать такую ​​программу? (Обычно он начинался бы с index.html, например, но без html или другого ui, что такое «начало» программы?) – boilers222

+0

Возможно консольное приложение. Существуют способы запуска консольного приложения без фактического отображения окна консоли (что явно желательно с точки зрения пользователя). Затем вы делаете свой исполняемый файл запланированной задачей, и Windows автоматически запустит его для вас в указанное вами время. (Единственное предостережение - я не написал один через некоторое время, но в последний раз, когда я проверил, существует ограничение на то, насколько точно они будут гарантировать вам точное время начала *, проверьте документацию точно, ll). – EJoshuaS