public TaskController(IWebHostEnvironment environment, IConfiguration configuration, ILogger <TaskController> log, IPyNNServiceClient srv, IPyAutoMLServiceClient automlSrv) { _environment = environment ?? throw new ArgumentNullException(nameof(environment)); this.Configuration = configuration; this.nnclient = srv; this.Logger = log; this.autoMLclient = automlSrv; try { taskResponse = TaskPayload.Get(); modelResponse = ModelPayload.Get(); } catch (Exception ex) { //ILogger string error = ex.Message; } }
public void ExecuteTasks() { RenderingInProgress = true; var taskCount = taskQueue.Count; List <Task> tasks = new List <Task>(); for (int i = 0, count = 0; i < taskCount; i += count) { var j = 0; tasks.Clear(); for (count = 0; j < NUM_THREADS && i + j < taskCount; j++) { count++; RenderTask task; if (!taskQueue.TryDequeue(out task)) { throw new SystemException("error dequeueing rendertask"); } var payload = new TaskPayload { pipelineNumber = j, task = task }; var t = new Task(() => { RunTask(payload); }); t.Start(); tasks.Add(t); } Task.WaitAll(tasks.ToArray()); for (var k = 0; k < j; k++) { if (!tasks[k].IsFaulted) { deferredPipelines[k].FinishCommandList(); ImmPipeline.ExecuteCommandList(deferredPipelines[k].CommandList); deferredPipelines[k].ReleaseCommandList(); } } } RenderingInProgress = false; }
private void RunTask(TaskPayload payload) { payload.task.Render(deferredPipelines[payload.pipelineNumber]); }