【发布时间】:2017-07-03 00:42:08
【问题描述】:
我想在 WCF 服务中使用“BluetoothLEAdvertisementWatcher”
public override void StartWathchingAsync()
{
BluetoothLEAdvertisementWatcher BluetoothWatcher = new BluetoothLEAdvertisementWatcher();
}
但是当我创建“BluetoothLEAdvertisementWatcher”的实例时,我收到以下错误
在 mscorlib.dll 中发生“System.ServiceModel.FaultException`1”类型的未处理异常
附加信息:参数不正确。 (例外来自 HRESULT: 0x80070057 (E_INVALIDARG))
一个异常详细信息,可能由 IncludeExceptionDetailInFaults=true,其值为: System.ArgumentException:参数不正确。 (例外来自 HRESULT: 0x80070057 (E_INVALIDARG)) 在 MeasurementDeviceService.MeasuringDeviceClasseis.XiaomiMiScale.StartWathchingAsync() 在 MeasurementDeviceService.DeviceService.GetData(MeasuringDevice 测量设备)在 C:\Users\Programmer\Desktop\Project MahdKodak\MahdKodak\MeasuringDeviceService\DeviceService.svc.cs:line 37 在 测量DeviceService.DeviceService.GetDataXiaomiMiScale(XiaomiMiScale xiaomiMiScale) 在 C:\Users\Programmer\Desktop\Project MahdKodak\MahdKodak\MeasuringDeviceService\DeviceService.svc.cs:line 25 在 SyncInvokeGetDataXiaomiMiScale(对象,对象 [],对象 []) 在 System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(对象 实例,Object[] 输入,Object[]& 输出)在 System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& RPC)在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& RPC)在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc& RPC)在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& RPC)在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& RPC)在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc& RPC)在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc& RPC)在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& RPC)在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)
当我注释下面的代码行时,我的程序运行良好
//BluetoothLEAdvertisementWatcher BluetoothWatcher = new BluetoothLEAdvertisementWatcher();
编辑:
这是我的代码
服务代码:
public class DeviceService : IDeviceService
{
Semaphore DeviceSemaphor = null;
public DeviceService()
{
DeviceSemaphor = new Semaphore(1, 1);
}
public XiaomiMiScaleData GetDataXiaomiMiScale(XiaomiMiScale xiaomiMiScale)
{
return GetData(xiaomiMiScale) as XiaomiMiScaleData;
}
public MeasuringDeviceData GetData(MeasuringDevice measuringDevice)
{
try
{
measuringDevice.StartWathchingAsync();
return measuringDevice.LastData;
}
catch (Exception ex)
{
return null;
}
}
}
其他类:
[DataContract]
public class MeasuringDevice
{
[DataMember]
public MeasuringDeviceData LastData { get; set; }
public MeasuringDevice()
{
}
[DataMember]
public ulong DeviceBluetoothAddress { get; set; }
public virtual void StartWathchingAsync()
{
}
}
[DataContract]
public class XiaomiMiScale : MeasuringDevice
{
public XiaomiMiScale()
{
LastData = new XiaomiMiScaleData();
}
public override void StartWathchingAsync()
{
BluetoothLEAdvertisementWatcher BluetoothWatcher = new BluetoothLEAdvertisementWatcher();
}
}
【问题讨论】:
-
如果您的方法只有一行导致异常的代码,那么当您注释该行时,您的方法当然会运行良好。您是否检查过 BluetoothLEAdvertisementWatcher 构造函数是否需要构造函数参数?您是否有权访问 API 或者可能会发布整个代码?