sonarr-repo-only/NzbDrone.Host/PriorityMonitor.cs

45 lines
1.2 KiB
C#

using System;
using System.Diagnostics;
using System.Threading;
using NLog;
using NzbDrone.Common;
using NzbDrone.Common.Processes;
namespace NzbDrone.Host
{
public class PriorityMonitor
{
private readonly IProcessProvider _processProvider;
private readonly Logger _logger;
private Timer _processPriorityCheckTimer;
public PriorityMonitor(IProcessProvider processProvider, Logger logger)
{
_processProvider = processProvider;
_logger = logger;
}
public void Start()
{
_processPriorityCheckTimer = new Timer(EnsurePriority);
_processPriorityCheckTimer.Change(TimeSpan.FromSeconds(15), TimeSpan.FromMinutes(30));
}
public virtual void EnsurePriority(object sender)
{
try
{
if (_processProvider.GetCurrentProcessPriority() != ProcessPriorityClass.Normal)
{
_processProvider.SetPriority(_processProvider.GetCurrentProcess().Id, ProcessPriorityClass.Normal);
}
}
catch (Exception e)
{
_logger.WarnException("Unable to verify priority", e);
}
}
}
}