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)