我用 Timers.Timer 做一个 Windows 服务。如果我作为控制台应用程序运行正常,但如果我将设置更改为 Windows 应用程序并评论所有控制台功能,则计时器不起作用。使用 Console.ReadLine(); 都好。但我不应该打开控制台。
protected override void OnStart(string[] args)
{
AutoLog = false;
SetTimer();
Console.ReadLine();//if remove this line dont works
}
设置定时器()
private void SetTimer()
{
mytimer = new Timer();
mytimer.Interval = 2000;
mytimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
mytimer.Enabled = true;
}
OnTimedEvent()
private void OnTimedEvent(object source, ElapsedEventArgs e)
{
mytimer.Enabled = false;
EventLog evento1 = new EventLog();
evento1.Source = "scPublicar";
evento1.Log = "Publicar";
evento1.WriteEntry("Publicación corriendo, OnTimedEvent");
mytimer.Enabled = true;
}
Program.cs Main()
static void Main(string[] args)
{
ServiceBase[] servicesToRun;
servicesToRun = new ServiceBase[] { new Publicar() };
if (Environment.UserInteractive)
{
MethodInfo onStartMethod = typeof(ServiceBase).GetMethod("OnStart", BindingFlags.Instance | BindingFlags.NonPublic);
foreach (ServiceBase service in servicesToRun)
{
onStartMethod.Invoke(service, new object[] { new string[] { } });
}
}
else
ServiceBase.Run(servicesToRun);
}
谢谢你的回答