Example #1
0
        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();
        }