我已经用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;
..............
}
相关分类