-1

我创建了一个 Windows 服务,它会根据某些条件向用户发送邮件。我以自动模式将它安装在服务器上。从日志中我可以看到它第一次成功运行并结束。

之后我没有在日志中看到它再次运行。

我在管理工具中检查了该服务,它说它已启动。

我也重新启动了服务,但没有用,它没有重新启动。

下面是我用来启动服务的代码。

public partial class ScheduledService : ServiceBase
{
    Timer timer;
    private DateTime lastRun = DateTime.Now;
    private DateTime DailyRunTime = Convert.ToDateTime(System.Configuration.ConfigurationManager.AppSettings["DailyRunTime"]);
    public ScheduledService()
    {
        InitializeComponent();
        //GetDocRetentionList DocList = new GetDocRetentionList();
        //DocList.GetDataSet();
    }

    protected override void OnStart(string[] args)
    {
        //System.Diagnostics.Debugger.Launch();
        TraceService("start service");
        //timer = new Timer(24 * 60 * 60 * 1000);
        timer = new Timer(10 * 60 * 1000);
        timer.Start();
        timer.Elapsed += new ElapsedEventHandler(OnElapsedTime);
        double TimerInterval = Convert.ToDouble(System.Configuration.ConfigurationManager.AppSettings["Timer"]);
        timer.Interval = TimerInterval;
        timer.Enabled = true;
    }

    protected override void OnStop()
    {
        timer.Enabled = false;
        TraceService("stopping service");
    }

    private void OnElapsedTime(object source, ElapsedEventArgs e)
    {
        TraceService("Service started at " + DateTime.Now);
        if (lastRun.Date < DateTime.Now.Date)
        {
            if (DateTime.Now > DailyRunTime)
            {
                GetDocRetentionList DocList = new GetDocRetentionList();
                DocList.GetDataSet();
                timer.Stop();
                lastRun = DateTime.Now.Date;
                //timer.Start();
            }
        }

    }

在这方面我能得到的任何帮助都会非常有帮助。请让我知道。

4

1 回答 1

2

好吧..您的服务设置为执行一次,然后它在方法中关闭计时器,OnElapsedTime但永远不会重新打开。

首先OnElapsedTime应该做的是关闭定时器。它应该做的最后一件事是重新打开它。

于 2013-09-23T14:00:57.403 回答