using System; using System.Threading.Tasks; namespace LD_SysInfo.Services { /// /// Base interface for scheduled tasks /// public interface IScheduledTask { string TaskName { get; } TimeSpan Interval { get; } DateTime? LastRun { get; set; } Task ExecuteAsync(); bool ShouldRun(); } /// /// Base class for scheduled tasks with common logic /// public abstract class ScheduledTask : IScheduledTask { public abstract string TaskName { get; } public abstract TimeSpan Interval { get; } public DateTime? LastRun { get; set; } public abstract Task ExecuteAsync(); public virtual bool ShouldRun() { if (LastRun == null) return true; return DateTime.Now - LastRun >= Interval; } } }