私はWCL BTライブラリへのラッパーを使用しています。アプリケーションは.NET 4にあり、ラッパーに必要なライセンスは.NET 2にあるため、これはちょっとした回避策です。mvc非同期コントローラで呼び出された場合、完全なイベントは発生しません
このラッパーを.NET 4 WPFアプリケーションで使用すると、が有効な限り正常に動作します。この詳細についてはhereをご覧ください。 OnDiscoveryCompleteイベントが発生するまでに約22秒かかります。
しかし、ASP .NET MVC 3アプリケーションで同じラッパーを使用すると、ライブラリのOnDiscoveryCompleteイベントは発生しません。なぜ誰も知っていますか?
ラッパーは、WPFアプリケーションではbuttonClickedEvent、MVCアプリケーションではAsyncControllerのSearchAsyncアクションで呼び出されます。
関連するコードはここにある:
var wrapper = new Wrapper();
wrapper.Search();
ラッパー::wclBluetoothDiscovery
が遭遇したが、適切にあなたにさらすされていないことを除いては、おそらく
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
}
行_btDiscovery.Discovery(radio、0x15);それはDiscoveryメソッドにはありません。たぶんコールバックに。 – dcarneiro
@Daniel Discoveryメソッドが非同期(実際の作業を行うためにバックグラウンドプロセスを開始してすぐに戻る)の場合、非表示の例外はそのバックグラウンドプロセスにあり、0の戻り値を得た後に発生します。 –
@Danielまた、なぜあなたは、Bluetoothの発見をしているWebアプリケーションを持っていますか? –