0

Windows サービスの適切なテンプレートへのリンクはありますか? (C#コードを探しています)

私が拡張できる基本的な機能を備えたもの。

4

2 に答える 2

3

あなたが探しているものは少し明確です。Visual StudioのWindows サービスプロジェクト タイプは、基本的な Windows サービスを使用するために必要なテンプレートを含むプロジェクトを作成します。

C# オンラインからこの記事を参照することもできます。いくつかのアイデアを説明し、記事にいくつかの部分があります。 (注:ページの読み込みが少し遅いようですので、しばらくお待ちください)

于 2008-10-29T14:21:39.007 に答える
1

私は VS2005 を使用しており、基本的なテンプレートから始めるのが好きです。

Service クラスをこれに変更します

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 関数を小さく高速に保ちます。そうしないと、サービスがタイムリーに応答しなかったというエラーでサービスが開始されません。

お役に立てれば

于 2008-10-30T10:39:49.750 に答える