public virtual void SetStatus(TestProxyResult result) { this.Working = result.Success; this.LastChecked = DateTime.Now; this.LastElapsedTime = result.ElapsedTime; this.LastException = result.Error; }
public static TestProxyResult TestProxy(IWebProxyWithStatus wp, int timeoutInMs = 10000) { TestProxyResult result = new TestProxyResult(); var sw = new Stopwatch(); using (Devmasters.Net.HttpClient.URLContent url = new Devmasters.Net.HttpClient.URLContent("http://api.devmasters.cz/ip.ashx")) { try { sw.Start(); url.Timeout = timeoutInMs; url.Proxy = wp; string content = url.GetContent().Text; result.Success = (content == wp.GetProxy(apiHost).Host); } catch (Exception ex) { result.Success = false; result.Error = ex; } finally { sw.Stop(); result.ElapsedTime = sw.Elapsed; } return(result); } }
public static void TestProxies(List <IWebProxyWithStatus> proxiesToCheck) { var results = new List <TestProxyResult>(); Parallel.ForEach(proxiesToCheck, #if DEBUG //new ParallelOptions() { MaxDegreeOfParallelism = 1 },// for DEBUG set 1 #else #endif wp => { TestProxyResult res = TestProxy(wp); wp.SetStatus(res); System.Diagnostics.Debug.WriteLine(wp.GetProxy(new Uri("http://www.seznam.cz")).AbsoluteUri + " " + res.ElapsedTime.Milliseconds.ToString() + " " + res.Success); }); }