public void Run() { var client = new WebClient(); var rand = new Random(); var data = new byte[DataSize]; rand.NextBytes(data); var results = new BandwidthCheckResult[Tries]; for (var i = 0; i < Tries; i++) { try { var stopwatch = new System.Diagnostics.Stopwatch(); stopwatch.Start(); var response_body = client.UploadData(Target, data); stopwatch.Stop(); results[i].ElapsedTime = stopwatch.Elapsed; results[i].Succeeded = true; } catch (WebException) { results[i].Succeeded = false; } } if (BandwidthCheckCompleted != null) { var success = results.Count(r => r.Succeeded) > 0; var average_seconds = results.Average(r => r.ElapsedTime.TotalSeconds); BandwidthCheckCompleted(this, new BandwidthCheckCompletedEventArgs(success, DataSize, TimeSpan.FromSeconds(average_seconds))); } }
public void RunAsync() { var ctx = System.Threading.SynchronizationContext.Current; System.Threading.ThreadPool.QueueUserWorkItem(state => { var client = new WebClient(); var rand = new Random(); var data = new byte[DataSize]; rand.NextBytes(data); var results = new BandwidthCheckResult[Tries]; for (var i = 0; i < Tries; i++) { try { var stopwatch = new System.Diagnostics.Stopwatch(); stopwatch.Start(); var response_body = client.UploadData(Target, data); stopwatch.Stop(); results[i].ElapsedTime = stopwatch.Elapsed; results[i].Succeeded = true; } catch (WebException) { results[i].Succeeded = false; } } if (BandwidthCheckCompleted != null) { var success = results.Count(r => r.Succeeded) > 0; var average_seconds = results.Average(r => r.ElapsedTime.TotalSeconds); ctx.Post(s => { BandwidthCheckCompleted( this, new BandwidthCheckCompletedEventArgs(success, DataSize, TimeSpan.FromSeconds(average_seconds))); }, null); } }); }