Хороший шаблон кода для службы Windows - PullRequest
0 голосов
/ 29 октября 2008

Есть ли ссылки на хороший шаблон для службы Windows? (ищет код C #)

Нечто, обладающее базовыми функциями, которые я мог бы расширить.

Ответы [ 2 ]

3 голосов
/ 29 октября 2008

Немного понятно, что вы ищете. Тип проекта Windows Service в Visual Studio создает проект с шаблонами, необходимыми для работы с базовой службой Windows.

Вы также можете посмотреть эту статью из C # Online. В ней рассматриваются несколько идей и есть несколько частей к статье. (Примечание; страница загружается медленно, поэтому наберитесь терпения)

1 голос
/ 30 октября 2008

Я использую VS2005, и мне нравится начинать с базового шаблона.

Изменить класс обслуживания на этот

using System;
using System.ServiceProcess;
using System.Timers;

namespace WindowsService1
{
    public partial class Service1 : ServiceBase
    {
        //better is to read from settings or config file
        private readonly Double _interval = (new TimeSpan(1, 0, 0, 0)).TotalMilliseconds;
        private Timer m_Timer;

        public Service1()
        {
            InitializeComponent();
            Init();
        }

        private void Init()
        {
            m_Timer = new Timer();
            m_Timer.BeginInit();
            m_Timer.AutoReset = false;
            m_Timer.Enabled = true;
            m_Timer.Interval = 1000.0;
            m_Timer.Elapsed += m_Timer_Elapsed;
            m_Timer.EndInit();
        }

        private void m_Timer_Elapsed(object sender, ElapsedEventArgs e)
        {
            //TODO WORK WORK WORK
            RestartTimer();
        }

        private void RestartTimer()
        {
            m_Timer.Interval = _interval;
            m_Timer.Start();
        }

        protected override void OnStart(string[] args)
        {
            base.OnStart(args);
            Start();
        }

        protected override void OnStop()
        {
            Stop();
            base.OnStop();
        }

        public void Start()
        {
            m_Timer.Start();
        }

        public new void Stop()
        {
            m_Timer.Stop();
        }
    }
}

Установите с помощью InstallUtil.exe после добавления установщика: http://msdn.microsoft.com/en-us/library/ddhy0byf(VS.80).aspx

Сохраняйте функцию Init маленькой и быстрой, иначе ваша служба не запустится с ошибкой, что служба не ответила своевременно

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...