kmCustomReportsNET/ClassObj/ServiceMain.cs

62 lines
1.3 KiB
C#
Raw Permalink Normal View History

2025-10-08 02:16:58 -04:00
using log4net;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Topshelf;
namespace kmCustomReportsNET.ClassObj;
internal class ServiceMain : ServiceControl
{
ILog appLog = LogManager.GetLogger(Program.AppName);
ConcurrentBag<Task> tasks = new();
public bool Start(HostControl hostControl)
{
tasks.Add(Task.Run(() => { Looper(); }));
appLog.Info(string.Format("Service successfully started."));
return true;
} //Start
public bool Stop(HostControl hostControl)
{
Program.isExiting = true;
Task.WaitAll(tasks.ToArray());
return true;
} //Stop
private void Looper()
{
var dtNext = DateTimeOffset.Now.AddSeconds(15);
var rn = new Random();
while (!Program.isExiting)
{
Thread.Sleep(rn.Next(250, 1500));
if (dtNext < DateTimeOffset.Now)
{
try
{
RunTheReports();
}
catch //(Exception)
{
// do nothing
}
dtNext = DateTimeOffset.Now.AddSeconds(rn.Next(60, 90));
}
}
}
private void RunTheReports()
{
using (var obj = new ClsDobbsEmail_T1439() { DebugMode = false })
{
obj.Go();
}
}
}