2013-03-19 5 views
3

Как конвертировать консольное приложение в C# в службу Windows? Есть ли шаблон, который это делает?Как конвертировать консольное приложение в службу Windows?

+2

Добро пожаловать в Stackoverflow, пожалуйста, прочитайте [FAQ] и [спросите] пару раз .. –

+0

Что вы пробовали? http://msdn.microsoft.com/en-us/library/zt39148a(v=vs.80).aspx – Alex

+0

Я не получил ваш вопрос Консольное приложение и служба Windows - это две разные вещи. Вы хотите добавить службу Windows в консольное приложение? – Shrivallabh

ответ

8

Внутри вашего кода вы можете использовать свойство Environment.UserInteractive, чтобы определить, какой режим вы используете в консоли/службе.

Пример: Общие свойства

static class Program 
{ 
    static void Main(params string[] args) 
    { 
     var service = new Service1(); 

     if (!Environment.UserInteractive) 
     { 
      var servicesToRun = new ServiceBase[] { service }; 
      ServiceBase.Run(servicesToRun); 
      return; 
     } 

     Console.WriteLine("Running as a Console Application"); 
     Console.WriteLine(" 1. Run Service"); 
     Console.WriteLine(" 2. Other Option"); 
     Console.WriteLine(" 3. Exit"); 
     Console.Write("Enter Option: "); 

     var input = Console.ReadLine(); 

     switch (input) 
     { 
      case "1": 
       service.Start(args); 
       Console.WriteLine("Running Service - Press Enter To Exit"); 
       Console.ReadLine(); 
       break; 
      case "2": 
       break; 
     } 
     Console.WriteLine("Closing"); 
    } 
} 

public partial class Service1 : ServiceBase 
{ 
    public Service1() { InitializeComponent(); } 
    public void Start(string[] args) { OnStart(args); } 
    protected override void OnStart(string[] args) { } 
    protected override void OnStop() { } 
} 
0

У меня часто работают мои службы Windows в качестве консольных приложений при построении в режиме отладки, чтобы упростить отладку.

Самый простой подход в вашем случае, вероятно, состоит в том, чтобы создать новую службу Windows, чтобы иметь правильную структуру вашей основной точки входа и правильные ссылки, а затем интегрировать код консоли в эту структуру.

Чтение/Запись в/из консоли необходимо будет переписать.

Если вам необходимо прочитать ввод пользователя, рассмотрите альтернативные способы предоставления этого ввода в службу. Если вы пишете вывод на консоль, напишите его в журнал. Лично я бы порекомендовал NLog.

-3

проекта -> изменить тип для библиотеки классов.
Вы можете удалить главную функцию, потому что она не будет называться

+1

Основная функция, безусловно, вызывается в службе Windows. –

Смежные вопросы