функция — BackgroundWorker DoWork Async & quot; Не работает & quot; с переполнением стека Bluetooth-функции

Я написал алгоритм сканирования Bluetooth-устройств и добавил его в свой список. Теперь я хочу, чтобы этот алгоритм постоянно работал в фоновом режиме. Но мой Фоновый работник не работает правильно. Даже мой пользовательский интерфейс также не отвечает.

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
toolStripStatusLabel1->Text="Active";
toolStripProgressBar1->Value=100;
backgroundWorker1->RunWorkerAsync();
}

private: System::Void backgroundWorker1_DoWork(System::Object^  sender, System::ComponentModel::DoWorkEventArgs^  e) {
BluetoothFunction(); \\It tells me here is an Error
}

void BluetoothFunction(){
m_bt = BluetoothFindFirstRadio(&m_bt_find_radio, &m_radio);

do{
vector<wstring> vec;
int m_device_id=0;
int m_radio_id = 0;
m_radio_id++;
BluetoothGetRadioInfo(m_radio, &m_bt_info);

m_search_params.hRadio = m_radio;
::ZeroMemory(&m_device_info, sizeof(BLUETOOTH_DEVICE_INFO));
m_device_info.dwSize = sizeof(BLUETOOTH_DEVICE_INFO);
m_bt_dev = BluetoothFindFirstDevice(&m_search_params, &m_device_info);

do{
wostringstream tmp;
++m_device_id;

//Konvertiere Byte in String
for (int i = 0; i < 6; i++) {
tmp << hex << m_device_info.Address.rgBytes [i];
if (i < 5)
tmp << L':';
}

//Verfügbarkeitsliste
vec.push_back(tmp.str());

listBox2->Items->Add(System::Runtime::InteropServices::Marshal::PtrToStringUni(IntPtr((void*) tmp.str().c_str())));

}while(BluetoothFindNextDevice(m_bt_dev, &m_device_info));
//searchId(vec, targetId);
BluetoothFindDeviceClose(m_bt_dev);

} while(BluetoothFindNextRadio(&m_bt_find_radio, &m_radio));
BluetoothFindRadioClose(m_bt);
}

Я предполагаю, что мои параметры для функции Bluetooth не верны.

Я был бы рад этому, если кто-нибудь может мне помочь.

С уважением

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]