C# 在Windows服务中激活计时器时出现问题

C# 在Windows服务中激活计时器时出现问题,c#,windows-services,C#,Windows Services,我目前正在尝试创建一个每14天执行一次metod的服务(由于测试,现在是20秒)。目前我的服务中有这些代码行,我似乎无法让它运行AddDataToDb()方法。有人知道我该怎么做才能让计时器工作吗 public partial class Service1 : ServiceBase { System.Timers.Timer oTimer = null; double interval = 2000; public Service1()

我目前正在尝试创建一个每14天执行一次metod的服务(由于测试,现在是20秒)。目前我的服务中有这些代码行,我似乎无法让它运行AddDataToDb()方法。有人知道我该怎么做才能让计时器工作吗

public partial class Service1 : ServiceBase
    {
        System.Timers.Timer oTimer = null;
        double interval = 2000;

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

        void IntializeService()
        {
            oTimer = new System.Timers.Timer(interval);
            oTimer.Enabled = true;
            oTimer.AutoReset = true;
            oTimer.Start();
            oTimer.Elapsed += new ElapsedEventHandler(oTimer_Elapsed);


        }

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

            Data.mData data = new mData();
            data.AddDataToDb();
        }

        protected override void OnStart(string[] args)
        {
            oTimer.Enabled = true;
            oTimer.Start();
        }

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

无论如何,使用计时器14天是错误的做法,因为每次应用程序部署或重新启动时,精度都会被破坏。使用任务调度器。如果我想让它在mvc站点上运行?任务计划程序仍然是最好的选择吗?让计划程序请求一个秘密URL来触发处理。对于初学者,您使用了2秒(不是20秒),在InitializeService方法中调用start()后连接处理程序通常不是好的做法。尽管如此,在上述代码中没有区别。您能否进一步详细说明无法运行该方法的含义?就像你尝试过一些调试,断点没有被击中一样?我不确定我说的是什么,但是有两种线程,前台和后台,如果使用了计时器(我认为是后台计时器),它只工作到进程结束,并且不会在主线程之后继续,因此服务可能在启动后停止,因为没有更多的命令告诉他停止。我这样说是因为在Win应用程序中,当你关闭表单时,计时器停止工作。所以我认为这是背景。正如我所说,这只是一个测试,我不确定,但是试着让你的服务暂停几分钟,然后用前/后接地线测试几分钟,看看它是否有效