Ejemplo n.º 1
0
        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)));
            }
        }
Ejemplo n.º 2
0
        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);
                }
            });
        }