0
TopShelf을 사용하여 첫 .Net 서비스를 작성했으며 서비스 코드가 한 번만 실행되는 문제가 있습니다.Windows 서비스는 한 번만 실행됩니다
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()
입니다.
나의 변호에서 나는 동료에 의해 나쁜 정보를 받았다. ;) 당신에게 쉬운 점을 알려 주어서 기쁘다. – McArthey
나는이 링크를 원하는 사람들에게 제공하고 싶었습니다. 이것은 TopShelf에만 국한되는 것이 아니라 서비스 속성입니다. https://msdn.microsoft.com/en-us/library/system.timers.timer.autoreset(v=vs.110).aspx – McArthey