private void OnRequestComplete() { if (CancellationTokenSource.IsCancellationRequested) { return; } RequestTask task = Tasks.Last(x => x.Response.IsCompleted); if (task.Response.IsCanceled) { CliNotifier.PrinWarning("Cannot load response"); } else if (task.Response.IsFaulted) { CliNotifier.PrinWarning("Server cancel connection"); } else { task.EndedAt = DateTime.Now.TimeOfDay; CliNotifier.PrintInfo($"Request finished by: {task.TotalExecutionTime} with status code: { task.Response.Result.StatusCode}"); Completed.Add(task); if (IsStopSignal(task.Response.Result)) { StopExecution(); } } RuningTasks--; if (RuningTasks < ConfigParser.GetParallel()) { AddTask(); } }
private void AddTask() { RequestTask requestTask = new RequestTask(); requestTask.StartedAt = DateTime.Now.TimeOfDay; requestTask.Response = Client.SendAsync(ConfigParser.GetRequest(), CancellationTokenSource.Token); requestTask.Response.GetAwaiter().OnCompleted(OnRequestComplete); Tasks.Add(requestTask); RuningTasks++; }
public CompletedRequest(RequestTask task) { StartedAt = task.StartedAt; CompletedBy = task.TotalExecutionTime; ResponseCode = task.Response.Result.StatusCode; Task <string> responseBody = task.Response.Result.Content.ReadAsStringAsync(); responseBody.GetAwaiter().OnCompleted(() => { ResponseMessage = responseBody.Result; return; }); }