62 lines
1.3 KiB
C#
62 lines
1.3 KiB
C#
|
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();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|