在后台应用程序中使用 BluetoothLEAdvertisementWatcher?
Using BluetoothLEAdvertisementWatcher in background application?
我尝试在我的 Windows 10 IOT 后台(无头)应用程序 运行 中扫描 BLE 设备 Raspberry PI 3。
我还尝试在同一台 RaspBerry PI 机器上的带头应用程序(带有 UI)中使用 BluetoothLEAdvertisementWatcher,并且成功了。
我的无头应用是最简单的:
public sealed class StartupTask : IBackgroundTask
{
private readonly BluetoothLEAdvertisementWatcher _bleWatcher =
new BluetoothLEAdvertisementWatcher();
public void Run(IBackgroundTaskInstance taskInstance)
{
_bleWatcher.Received += _bleWatcher_Received;
_bleWatcher.ScanningMode = BluetoothLEScanningMode.Active;
_bleWatcher.Start();
}
private void _bleWatcher_Received(BluetoothLEAdvertisementWatcher sender, BluetoothLEAdvertisementReceivedEventArgs args)
{
}
}
_bleWatcher_Received 永远不会被击中。功能已设置(蓝牙、互联网、近距离)。
问题是什么?我想念什么?
当 运行 方法完成时,您的应用程序将关闭。这就是为什么 _bleWatcher_Received
永远不会被击中。
为了防止您的应用程序退出,您需要像这样调用“GetDeferral”方法:
public void Run(IBackgroundTaskInstance taskInstance)
{
deferral = taskInstance.GetDeferral();
//YOUR CODE HERE
}
更多信息请参考“Developing Background Applications”。
我尝试在我的 Windows 10 IOT 后台(无头)应用程序 运行 中扫描 BLE 设备 Raspberry PI 3。
我还尝试在同一台 RaspBerry PI 机器上的带头应用程序(带有 UI)中使用 BluetoothLEAdvertisementWatcher,并且成功了。
我的无头应用是最简单的:
public sealed class StartupTask : IBackgroundTask
{
private readonly BluetoothLEAdvertisementWatcher _bleWatcher =
new BluetoothLEAdvertisementWatcher();
public void Run(IBackgroundTaskInstance taskInstance)
{
_bleWatcher.Received += _bleWatcher_Received;
_bleWatcher.ScanningMode = BluetoothLEScanningMode.Active;
_bleWatcher.Start();
}
private void _bleWatcher_Received(BluetoothLEAdvertisementWatcher sender, BluetoothLEAdvertisementReceivedEventArgs args)
{
}
}
_bleWatcher_Received 永远不会被击中。功能已设置(蓝牙、互联网、近距离)。
问题是什么?我想念什么?
当 运行 方法完成时,您的应用程序将关闭。这就是为什么 _bleWatcher_Received
永远不会被击中。
为了防止您的应用程序退出,您需要像这样调用“GetDeferral”方法:
public void Run(IBackgroundTaskInstance taskInstance)
{
deferral = taskInstance.GetDeferral();
//YOUR CODE HERE
}
更多信息请参考“Developing Background Applications”。