/// <summary> /// Відправляє задачу на виконання. /// </summary> /// <param name="scriptTask">Об'єкт задачі, яку потрібно виконати.</param> /// <returns>Об'єкт <see cref="System.Threading.Tasks.Task"/>, за допомогою якого можна отримати результат виконання.</returns> public async Task <CSharpTaskCompletionResult> RunTask(CSharpScriptTask scriptTask) { if (scriptTask.Id == default(Guid)) { scriptTask.Id = Guid.NewGuid(); } var taskCompletionSource = new TaskCompletionSource <CSharpTaskCompletionResult>(); var executionContext = new CSharpScriptExecutionContext(scriptTask, taskCompletionSource); _resultsDispatchActorRef.Tell(executionContext); var worker = _workersBalancer.GetNextWorkerDeplInfo(); var actor = _actorSystem.ActorOf(_workerRouters[worker]); actor.Tell(scriptTask); CSharpTaskCompletionResult result = await taskCompletionSource.Task; scriptTask.CompletionResult = result; return(result); }
public async Task <ActionResult> RunTask(CSharpScriptTask scriptTask) { await _mainSystem.RunTask(scriptTask); return(View("RunTask", scriptTask)); }
public ActionResult RunTask() { var scriptTask = new CSharpScriptTask(); return(View("RunTask", scriptTask)); }
/// <summary> /// Відправляє задачу на виконання. /// </summary> /// <param name="taskContent">Код задачі, яку потрібно виконати.</param> /// <returns>Об'єкт <see cref="System.Threading.Tasks.Task"/>, за допомогою якого можна отримати результат виконання.</returns> public async Task <CSharpTaskCompletionResult> RunTask(string taskContent) { var scriptTask = new CSharpScriptTask(taskContent); return(await RunTask(scriptTask)); }