C# 为什么赢了';我的计时器事件启动了吗?

C# 为什么赢了';我的计时器事件启动了吗?,c#,timer,windows-services,C#,Timer,Windows Services,我有一个带有类级计时器的windows服务。已用事件调用此工作方法: protected override void Work() { if (!File.Exists(@"C:\Users\Will\Desktop\Developer stuff\junk text files\reusableservicetest.txt")) File.Create(@"C:\Users\Will\Desktop\Developer stuff\junk t

我有一个带有类级计时器的windows服务。已用事件调用此工作方法:

protected override void Work()
    {
        if (!File.Exists(@"C:\Users\Will\Desktop\Developer stuff\junk text files\reusableservicetest.txt"))
            File.Create(@"C:\Users\Will\Desktop\Developer stuff\junk text files\reusableservicetest.txt");
        File.WriteAllLines(@"C:\Users\Will\Desktop\Developer stuff\junk text files\reusableservicetest.txt",
            new[] { DateTime.Now.ToLongTimeString() });
    }
如您所见,它只是将日期时间写入txt文件。服务安装和启动正常,但不会写入日期时间。我花了很长时间才让这个poc工作。在这里,它应该是一种常用模式的抽象:每隔一段时间做一些工作。女士们先生们,你们知道我错在哪里吗? 下面是基类:

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

namespace WF.EMC.AVP.CommonCore.Utilities
{
public abstract class PollingServiceBase : ServiceBase
{
    private readonly Timer _timer;
    private System.ComponentModel.IContainer components = null;
    private string _serviceName;

    protected PollingServiceBase(int pollingMinutes, string serviceName)
    {
        _serviceName = serviceName;
        var pollingInterval = new TimeSpan(0, 0, pollingMinutes, 0);
        _timer = new Timer(pollingInterval.TotalMilliseconds) {AutoReset = true};
        _timer.Elapsed += timer_Elapsed;
    }

    void timer_Elapsed(object sender, ElapsedEventArgs e)
    {
        Work();
    }

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

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

        protected abstract void Work();

        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }


        /// <summary> 
        /// Required method for Designer support - do not modify 
        /// the contents of this method with the code editor.
        /// </summary>
        public void InitializeComponent()
        {
            components = new System.ComponentModel.Container();
            this.ServiceName = _serviceName;
        }

}
}


您使用空方法重写了OnStart。所以你的计时器不会启动

您使用empty方法重写了OnStart。所以你的计时器不会启动

您使用empty方法重写了OnStart。所以你的计时器不会启动

您使用empty方法重写了OnStart。所以你的计时器不会启动

当你没有包含任何相关代码时,你就出错了。包括与计时器相关的代码。我不明白为什么
工作
代码是相关的,问题在于调用该方法。显示如何连接计时器事件。在那里。对不起,各位!当你没有包含任何相关代码时,你就出错了。包括与计时器相关的代码。我不明白为什么
工作
代码是相关的,问题在于调用该方法。显示如何连接计时器事件。在那里。对不起,各位!当你没有包含任何相关代码时,你就出错了。包括与计时器相关的代码。我不明白为什么
工作
代码是相关的,问题在于调用该方法。显示如何连接计时器事件。在那里。对不起,各位!当你没有包含任何相关代码时,你就出错了。包括与计时器相关的代码。我不明白为什么
工作
代码是相关的,问题在于调用该方法。显示如何连接计时器事件。在那里。对不起,各位!
namespace TestService7
{

public partial class Service1 : PollingServiceBase
{
    public Service1(int pollingMinutes = 1, string serviceName = "TestService7")
        : base(pollingMinutes, serviceName)
    {
        InitializeComponent();
    }

    protected override void OnStart(string[] args)
    {
    }

    protected override void OnStop()
    {
    }

    protected override void Work()
    {
        if (!File.Exists(@"C:\Users\Will\Desktop\Developer stuff\junk text files\reusableservicetest.txt"))
            File.Create(@"C:\Users\Will\Desktop\Developer stuff\junk text files\reusableservicetest.txt");
        File.WriteAllLines(@"C:\Users\Will\Desktop\Developer stuff\junk text files\reusableservicetest.txt",
            new[] { DateTime.Now.ToLongTimeString() });
    }
}
}