Сбой потока подключения клиента 32 фута

Я пытаюсь подключиться через приложение, которое я делаю в качестве клиента, к своему телефону в целях тестирования, но что-то упускаю. После сопряжения устройств программа должна открыть новый поток, в котором она запускает client.BeginConnect, но доходит только до «Начало потока подключения…».

        BluetoothDeviceInfo deviceInfo;
    private void listBox1_DoubleClick(object sender, EventArgs e)
    {
        deviceInfo = devices.ElementAt(listBox1.SelectedIndex);
        updateUI(deviceInfo.DeviceName + " was selected. Attempting to connect.");

        if (pairDevice())
        {
            updateUI("Device paired.");
            updateUI("Starting connect thread...");
            Thread bluetoothClientThread = new Thread(new ThreadStart(ClientConnectThread));
        }
        else
        {
            updateUI("Pairing failed.");
        }
    }

    private void ClientConnectThread()
    {
        updateUI("Attempting connect.");
        client.BeginConnect(deviceInfo.DeviceAddress, BluetoothService.SerialPort, new AsyncCallback(BluetoothClientConnectCallback), client);
    }

Я попытался повторно использовать поток, который ранее использовал для сканирования устройств, и вставил туда BeginConnect, но это просто приводит к сбою программы. Я не уверен, какую ошибку он может показать, потому что я программирую его на своем ПК, но могу проверить программу только на другом ноутбуке, используя файл .exe.


person MrE    schedule 31.05.2018    source источник


Ответы (1)


Вы создали тему, но еще не попросили ее начать:

Thread bluetoothClientThread = new Thread(new ThreadStart(ClientConnectThread));
bluetoothClientThread.Start(); // <--- this starts the thread

Подробности см. здесь

Конечно, тогда у вас возникает другая проблема, потому что вы вызываете BeginConnect (асинхронно), а затем функция завершается (как и поток).

person Neil    schedule 31.05.2018
comment
Спасибо, вы действительно попали в точку. Я добавил .Start и создал событие ручного сброса, поэтому он приостанавливает поток до тех пор, пока .Set не будет вызван из обратного вызова, но метод обратного вызова, похоже, больше не работает. Если только я каким-то образом не испортил установленное событие, и оно вообще не запускается. @Нил - person MrE; 01.06.2018
comment
Я понятия не имею, почему он продолжал падать при подключении к телефону, но с Arduino я делал так, чтобы он работал, поэтому я думаю, что это решено. - person MrE; 01.06.2018