Windows 服务只执行一次
Windows service only executes once
我已经使用 TopShelf 编写了我的第一个 .Net 服务,但我遇到了服务代码仅执行一次的问题。
我已经配置了主服务如下
private static void Main(string[] args)
{
HostFactory.Run(x =>
{
x.Service<ServiceProcess>(s =>
{
s.ConstructUsing(name => new ServiceProcess());
s.WhenStarted(tc => tc.Start());
s.WhenStopped(tc => tc.Stop());
});
x.StartAutomatically();
x.RunAs(Username, Password);
});
}
而只运行一次的方法如下
using System.Timers;
public class ServiceProcess
{
private readonly Timer _timer;
public ServiceProcess()
{
_timer = new Timer(1000) { AutoReset = false };
_timer.Elapsed += (sender, eventArgs) => EventLog.WriteEntry(ServiceName, "It is " + DateTime.Now, EventLogEntryType.Information);
}
}
我可以在事件日志中看到消息写入正确,但只出现一次。由于这是最基本的配置,我不确定为什么它不起作用。我玩过时间并尝试添加异常处理,但最终它似乎不再是 运行 了。
请注意,我的 Start()
和 Stop()
方法分别执行 _timer.Start()
和 _timer.Stop()
。
将计时器的自动重置 属性 设置为真。
我已经使用 TopShelf 编写了我的第一个 .Net 服务,但我遇到了服务代码仅执行一次的问题。
我已经配置了主服务如下
private static void Main(string[] args)
{
HostFactory.Run(x =>
{
x.Service<ServiceProcess>(s =>
{
s.ConstructUsing(name => new ServiceProcess());
s.WhenStarted(tc => tc.Start());
s.WhenStopped(tc => tc.Stop());
});
x.StartAutomatically();
x.RunAs(Username, Password);
});
}
而只运行一次的方法如下
using System.Timers;
public class ServiceProcess
{
private readonly Timer _timer;
public ServiceProcess()
{
_timer = new Timer(1000) { AutoReset = false };
_timer.Elapsed += (sender, eventArgs) => EventLog.WriteEntry(ServiceName, "It is " + DateTime.Now, EventLogEntryType.Information);
}
}
我可以在事件日志中看到消息写入正确,但只出现一次。由于这是最基本的配置,我不确定为什么它不起作用。我玩过时间并尝试添加异常处理,但最终它似乎不再是 运行 了。
请注意,我的 Start()
和 Stop()
方法分别执行 _timer.Start()
和 _timer.Stop()
。
将计时器的自动重置 属性 设置为真。