【发布时间】:2020-01-14 09:47:44
【问题描述】:
我的服务正在运行,但它没有执行我在 OnStart 中插入的任何逻辑, 另外,我尝试将消息记录到事件查看器,但它甚至没有到达那部分(我假设它在 OnStart 之前下降..) 有人可以告诉我我做错了什么吗?谢谢,
public partial class DSGService : ServiceBase
{
private static string ftpPath = ConfigurationManager.AppSettings["FtpPath"];
private Timer _timer;
private bool _isRunning;
public DSGService()
{
InitializeComponent();
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
}
private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
WriteToEventViewer("error!:" + e.ExceptionObject.ToString());
}
OnStart 逻辑
protected override void OnStart(string[] args)
{
_isRunning = false;
_timer = new Timer
{
AutoReset = true,
Interval = 5000,
};
_timer.Elapsed += new ElapsedEventHandler(this.TimerElapsed);
_timer.Start();
}
做事的代码
private void TimerElapsed(object sender, ElapsedEventArgs e)
{
if (_isRunning)
{
WriteToEventViewer("isrunning is true");
return;
}
try
{
_isRunning = true;
WriteToEventViewer("started");
//do things..
WriteToEventViewer("generated!");
}
}
finally
{
_isRunning = false;
WriteToEventViewer("done");
}
}
private void GenerateAndPublishData(ServerData server)
{
try
{
//do things...
}
catch (Exception ee)
{
WriteToEventViewer(string.Format("error: {0}", ee);
}
}
protected override void OnStop()
{
_timer.Stop();
_timer.Dispose();
_timer = null;
}
写入事件查看器
private void WriteToEventViewer(string msg)
{
using (EventLog eventLog = new EventLog("DSGService"))
{
eventLog.Source = "DSGService";
eventLog.WriteEntry(msg, EventLogEntryType.Information, 101, 1);
}
}
}```
【问题讨论】:
标签: c# .net windows-services