private void connectBtn_Click(object sender, EventArgs e) { new Thread(() => { switch (connectBtn.Text) { // собираемся подключаться case connectText: status.Invoke(new Action(() => status.Items[0].Text = "Подключение к " + deviceCombo.Items[deviceCombo.SelectedIndex])); enablingComponents(false, deviceCombo, connectBtn, scanBtn); // пытаемся открыть порт if (myBt.open()) { // меняем текст кнопки на "Отключиться" connectBtn.Invoke(new Action(() => connectBtn.Text = disconnectText)); // возвращаем кнопке подключения доступность enablingComponents(true, connectBtn); lightShow.Start(); } else { enablingComponents(true, deviceCombo, connectBtn, scanBtn); } status.Invoke(new Action(() => status.Items[0].Text = "")); break; // собираемся отключаться case disconnectText: // меняем текст кнопки на "Подключиться" connectBtn.Invoke(new Action(() => connectBtn.Text = connectText)); // возвращаем кнопке подключения доступность enablingComponents(true, deviceCombo, scanBtn); // останавливаем обработку цветомузыки lightShow.Stop(); // закрываем соединение с устройством myBt.close(); break; } // TODO: другой поток! ActiveControl = spectrumChart; }).Start(); }