private async Task RunTask(Job j) { j.PrefixedAction(); try { var t = Task.Factory.StartNew(j.Action); if (await Task.WhenAny(t, Task.Delay(TimeSpan.FromMinutes(20))) == t && !t.IsFaulted) { j.PostFixedAction(); } else { // we timedout j.FailedAction(); } } catch { j.FailedAction(); } }
public void Add(Job job) { _jobs.Add(job); }