private void PerformTest(int numOfLoadTestClients) { Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); this.Invoke(new Action(ResetUiLoadTestOn)); testing = true; for (int i = 0; i < numOfLoadTestClients; i++) { var cM = new ClientManager(); string host = @"127.0.0.1"; int port = 5000; string clientId = "testClient"+i; int timeout = 2; this.Invoke(new Action(() => { host = connectionAddressTextBox.Text.Trim(); port = int.Parse(connectionPortTextBox.Text.Trim()); timeout = int.Parse(connectionTimeoutTextBox.Text.Trim()); })); cM.Init( host, port, clientId, timeout, this, true); testClients.GetOrAdd(i, cM); Thread.Sleep(MQTTBase.THREAD_SLEEP_REST_TIME); } // wait a bit Thread.Sleep(500); for (int i = 0; i < numOfLoadTestClients; i++) { ClientManager manager; if (testClients.TryGetValue(i, out manager)) { manager.Disconnect(true); } } stopwatch.Stop(); MessageBox.Show(String.Format("Load test completed in {0}ms with {1} clients", stopwatch.ElapsedMilliseconds, numOfLoadTestClients), @"Load test complete!", MessageBoxButtons.OK, MessageBoxIcon.Information); // wait a bit Thread.Sleep(1000); testing = false; Invoke(new Action(ResetUiDisconnected)); }