diff --git a/src/Tgstation.Server.Host/Core/JobHandler.cs b/src/Tgstation.Server.Host/Core/JobHandler.cs index 72fc7faa40..c57c7bdc1f 100644 --- a/src/Tgstation.Server.Host/Core/JobHandler.cs +++ b/src/Tgstation.Server.Host/Core/JobHandler.cs @@ -9,24 +9,25 @@ namespace Tgstation.Server.Host.Core /// sealed class JobHandler : IDisposable { - /// - /// The being run - /// - readonly Task task; /// /// The for /// readonly CancellationTokenSource cancellationTokenSource; + /// + /// The being run + /// + readonly Task task; /// /// Construct a /// - /// The value of - /// The value of - JobHandler(Task task, CancellationTokenSource cancellationTokenSource) + /// A taking a and returning a that the will wrap + public JobHandler(Func job) { - this.task = task; - this.cancellationTokenSource = cancellationTokenSource; + if (job == null) + throw new ArgumentNullException(nameof(job)); + cancellationTokenSource = new CancellationTokenSource(); + task = job(cancellationTokenSource.Token); } /// @@ -54,16 +55,5 @@ namespace Tgstation.Server.Host.Core /// Cancels /// public void Cancel() => cancellationTokenSource.Cancel(); - - /// - /// Create a - /// - /// A taking a and returning a that the will wrap - /// A new - public static JobHandler Create(Func job) - { - var cts = new CancellationTokenSource(); - return new JobHandler(job(cts.Token), cts); - } } } \ No newline at end of file diff --git a/src/Tgstation.Server.Host/Core/JobManager.cs b/src/Tgstation.Server.Host/Core/JobManager.cs index 614661ac0e..b3aeac331d 100644 --- a/src/Tgstation.Server.Host/Core/JobManager.cs +++ b/src/Tgstation.Server.Host/Core/JobManager.cs @@ -168,7 +168,7 @@ namespace Tgstation.Server.Host.Core await databaseContext.Save(cancellationToken).ConfigureAwait(false); logger.LogDebug("Starting job {0}: {1}...", job.Id, job.Description); - var jobHandler = JobHandler.Create(x => RunJob(job, (jobParam, serviceProvider, ct) => + var jobHandler = new JobHandler(x => RunJob(job, (jobParam, serviceProvider, ct) => operation(jobParam, serviceProvider, y => { lock (this)