我正在编写Windows服务,在定义的时间段之后调用方法(现在是20秒)。一切都很好,直到没有。似乎无法找到问题的原因。 服务似乎开始和停止正确地给出日志条目,但似乎它不会调用已经过去的事件。
ul
有人能指出我错过了什么吗?
答案 0 :(得分:2)
我将try catch移到了timer1_tick方法。 这是异常检查的正确位置。
你可以抛出一个异常o timer1_tick和平代码。
您有connectionStrings
个部分?
注意:我更喜欢使用
Start
和Stop
方法而不是Enabled = true
和Enabled = false
。 有两种方法是正确的。
试试这个:
public partial class UssPwdSyncService : ServiceBase
{
private Timer timer1 = null;
public UssPwdSyncService()
{
InitializeComponent();
this.timer1 = new Timer();
this.timer1.Interval = 20000;
this.timer1.Elapsed += new System.Timers.ElapsedEventHandler(timer1_tick);
}
protected override void OnStart(string[] args)
{
this.timer1.Start();
LogHandling.WriteErrorLogs("Service has started! LOg!");
}
private void timer1_tick(object sender, ElapsedEventArgs e)
{
try
{
ConfigurationManager.RefreshSection("connectionStrings");
foreach (ConnectionStringSettings cStr in ConfigurationManager.ConnectionStrings)
{
string name = cStr.Name;
string connString = cStr.ConnectionString;
string provider = cStr.ProviderName;
LogHandling.WriteErrorLogs(name + " " + connString + " " + provider);
}
LogHandling.WriteErrorLogs("This does something!");
}
catch (Exception ex)
{
LogHandling.WriteErrorLogs(ex);
}
}
protected override void OnStop()
{
this.timer1.Stop();
LogHandling.WriteErrorLogs("Service has stoped!");
}
}
答案 1 :(得分:0)
我假设您在System.Timers
中使用了计时器。您需要调用计时器Start()
方法。