protected override LineDTO[] GetLiveLines() { try { var st = new Stopwatch(); st.Start(); var lines = new List <LineDTO>(); var randHost = ProxyList.PickRandom(); List <Event> events; using (var webClient = new PostWebClient(randHost)) { events = JsonConvert.DeserializeObject <EventsResponce>(webClient.Post($"{Host}en/live/secure/api/betoffer/liveEvents")).events; } var tasks = events.AsParallel().WithDegreeOfParallelism(4).Select(@event => Task.Factory.StartNew( state => { var proxy = ProxyList.PickRandom(); using (var wc = new PostWebClient(proxy)) { try { var query = new NameValueCollection { { "id", @event.Id }, { "full", "True" } }; var responce = wc.Post($"{Host}en/live/secure/api/betoffer/event", query); lock (Lock) { lines.AddRange(BwinLineConverter.Convert(Name, responce)); } } catch (Exception e) { Log.Info("Bwin error" + e.Message + e.InnerException + proxy); } } }, @event)).ToArray(); try { Task.WaitAll(tasks.ToArray(), 10000); } catch { Log.Info("Bwin Task wait all exception, line count " + lines.Count); Console.WriteLine("Bwin Task wait all exception, line count " + lines.Count); } LastUpdatedDiff = DateTime.Now - LastUpdated; ConsoleExt.ConsoleWrite(Name, ProxyList.Count, lines.Count, new DateTime(LastUpdatedDiff.Ticks).ToString("mm:ss")); return(lines.ToArray()); } catch (Exception e) { Log.Info($"ERROR {e.Message} {e.InnerException}"); Console.WriteLine($"ERROR {e.Message} {e.InnerException}"); } return(new LineDTO[] { }); }