计时器经过时,C#Windows服务中的任务不会记录

我已经用C#编写了一个Windows服务,在其中我在OnStart(),OnStop()处调用了一个异步任务,并且每隔30秒就会经过一个计时器滴答声。该任务如下所示:


    private async void WriteLog(WorkerLog worker)

    {

        string x = await Logger.WriteLogAsync(worker);

        Logger.WriteError(x);

    }

我面临的问题是,当调用OnStart时,我可以看到记录器正在记录日志。但是计时器经过的回调未记录。另外,当我从服务浏览器中停止服务时,它也不会记录日志。我已经在没有此异步调用的情况下测试了该服务,该服务会记录每个滴答和OnStop()。


任何人都可以指出我的想法,然后再在Windows Service Timer滴答调用中调用异步调用吗?


为了了解我的计时器计时器已过时的样子,请执行以下操作:


    private void workerTimer_Tick(object sender, ElapsedEventArgs e)

    {

        // Write code here to do some job depends on your requirement

        worker.Message = "Scheduler timer ticked and some job has been done successfully.";

        WriteLog(worker);

    }

在OnStart()中创建的计时器


    protected override void OnStart(string[] args)

    {

        workerTimer = new System.Timers.Timer();

        this.workerTimer.Interval = 30000; // every 30 secs

        this.workerTimer.Elapsed += new System.Timers.ElapsedEventHandler(this.workerTimer_Tick);

        this.workerTimer.Enabled = true;

        this.workerTimer.AutoReset = false;


        ..............

    }


拉风的咖菲猫
浏览 148回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP