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 async Task <BandwidthCheckResult> RunAsync(CancellationToken cancellationToken) { var result = new BandwidthCheckResult { Succeeded = false, DataSize = 0, ElapsedTime = TimeSpan.MaxValue, }; var rand = new Random(); var data = new byte[250 * 1024]; rand.NextBytes(data); data = CreateChunk(data); var stopwatch = new System.Diagnostics.Stopwatch(); try { long sz = 0; stopwatch.Start(); await PostAsync(async (s, ct) => { while (stopwatch.ElapsedMilliseconds < 10000) { await s.WriteBytesAsync(data, ct).ConfigureAwait(false); sz += data.Length; } }, cancellationToken).ConfigureAwait(false); stopwatch.Stop(); result.DataSize = sz; result.Succeeded = true; result.ElapsedTime = stopwatch.Elapsed; } catch (WebException) { result.Succeeded = false; } return(result); }
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); } }); }