32feet 客户端连接线程失败
32feet client connecting thread failing
我正在尝试通过我作为客户端制作的应用程序连接到我的 phone 以进行测试,但我遗漏了一些东西。配对设备后,程序应打开一个新线程运行 client.BeginConnect,但它只能到达 "Starting connect thread..."。
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 粘贴到那里,但这只会导致程序崩溃。我不确定它可能会显示什么错误,因为我正在我的 PC 上对其进行编程,但只能使用 .exe 文件在另一台笔记本电脑上测试该程序。
您已经创建了一个线程,但您还没有要求它开始:
Thread bluetoothClientThread = new Thread(new ThreadStart(ClientConnectThread));
bluetoothClientThread.Start(); // <--- this starts the thread
当然,你还有另一个问题,因为你调用了 BeginConnect(它是异步的),然后函数结束(线程也会结束)。
我正在尝试通过我作为客户端制作的应用程序连接到我的 phone 以进行测试,但我遗漏了一些东西。配对设备后,程序应打开一个新线程运行 client.BeginConnect,但它只能到达 "Starting connect thread..."。
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 粘贴到那里,但这只会导致程序崩溃。我不确定它可能会显示什么错误,因为我正在我的 PC 上对其进行编程,但只能使用 .exe 文件在另一台笔记本电脑上测试该程序。
您已经创建了一个线程,但您还没有要求它开始:
Thread bluetoothClientThread = new Thread(new ThreadStart(ClientConnectThread));
bluetoothClientThread.Start(); // <--- this starts the thread
当然,你还有另一个问题,因为你调用了 BeginConnect(它是异步的),然后函数结束(线程也会结束)。