Я использую оболочку для библиотеки WCL BT. Поскольку приложение находится в .NET 4, а лицензия на упаковщик - в .NET 2, это небрежный обходной путь.
Использование этой оболочки с приложением .NET 4 WPF работает нормально, если включен useLegacyV2RuntimeActivationPolicy
. Подробнее об этом здесь . На запуск события OnDiscoveryComplete уходит около 22 секунд.
Но при использовании той же оболочки с приложением ASP NET MVC 3 событие OnDiscoveryComplete в библиотеке никогда не вызывается. Кто-нибудь знает почему?
Оболочка вызывается для buttonClickedEvent в приложении WPF и для действия SearchAsync в AsyncController в приложении MVC.
Соответствующий код здесь:
Вызов оболочки:
var wrapper = new Wrapper();
wrapper.Search();
Wrapper:
public Wrapper() {
_wclApi = new wclAPI();
_wclApi.Load();
_btDiscovery = new wclBluetoothDiscovery();
_btDiscovery.OnDiscoveryStarted += BtDiscoveryOnDiscoveryStarted;
_btDiscovery.OnDiscoveryComplete += BtDiscoveryOnDiscoveryComplete;
}
public void Search() {
var radios = new wclBluetoothRadios();
var ret = _btDiscovery.EnumRadios(radios);
if (ret == 0) {
wclBluetoothRadio radio = radios[0];
_btDiscovery.Discovery(radio, 0x15);
}
}
private void BtDiscoveryOnDiscoveryComplete(object sender, wclBluetoothDiscoveryCompleteEventArgs e) {
// handle devices found
}