public void Execute(ScheduledTask task, ThreadController controller) { controller.Wait(); task.Status = TaskStatus.Running; _repository.Save(task); var client = CreateClient(task); controller.Wait(); try { client.Open(); var result = client.Execute(); client.Close(); RecordResult(task, result.Result, result.Message); } catch(TimeoutException te) { RecordResult(task, TaskResult.RecoverableFault, te.Message, te); client.Abort(); } catch(CommunicationException ce) { RecordResult(task, TaskResult.RecoverableFault, ce.Message, ce); client.Abort(); } catch(Exception ex) { RecordResult(task, TaskResult.FatalError, ex.Message, ex); client.Abort(); throw; } }
public void Execute(ScheduledTask task, ThreadController controller) { controller.Wait(); task.Status = TaskStatus.Running; _repository.Save(task); var client = CreateClient(task); controller.Wait(); try { client.Open(); var result = client.Execute(); client.Close(); RecordResult(task, result.Result, result.Message); } catch (TimeoutException te) { RecordResult(task, TaskResult.RecoverableFault, te.Message, te); client.Abort(); } catch (CommunicationException ce) { RecordResult(task, TaskResult.RecoverableFault, ce.Message, ce); client.Abort(); } catch (Exception ex) { RecordResult(task, TaskResult.FatalError, ex.Message, ex); client.Abort(); throw; } }
public void Poll(ThreadController controller) { controller.Wait(); // check for pause/abort while (true) { try { var tasks = _repository.GetPendingTasks(); foreach (var task in tasks) { var taskToRun = task; controller.Start(c => _executor.Execute(taskToRun, controller)); } } finally { // TODO: configurable polling interval controller.Wait(TimeSpan.FromMinutes(1)); } } }
public void Poll(ThreadController controller) { controller.Wait(); // check for pause/abort while(true) { try { var tasks = _repository.GetPendingTasks(); foreach(var task in tasks) { var taskToRun = task; controller.Start(c => _executor.Execute(taskToRun, controller)); } } finally { // TODO: configurable polling interval controller.Wait(TimeSpan.FromMinutes(1)); } } }
public void Wait_OnNonTaskThread_BlocksForActivity() { var fail = true; using (var controller = new ThreadController()) { controller.Start(); controller.Pause(); Action func = () => { controller.Wait(TimeSpan.FromMilliseconds(50)); fail = true; }; fail = false; var result = func.BeginInvoke(null, null); controller.Stop(); result.AsyncWaitHandle.WaitOne(); Assert.That(fail, Is.False, "Task did not wait properly."); } }
public void Wait_OnNonTaskThread_BlocksForActivity() { var fail = true; using(var controller = new ThreadController()) { controller.Start(); controller.Pause(); Action func = () => { controller.Wait(TimeSpan.FromMilliseconds(50)); fail = true; }; fail = false; var result = func.BeginInvoke(null, null); controller.Stop(); result.AsyncWaitHandle.WaitOne(); Assert.That(fail, Is.False, "Task did not wait properly."); } }