0
这个问题涉及编程,但也涉及我的体系结构,如果它需要更改。类之外的传递和事件处理程序
基本上,我有包裹在一个类中的微软频功能,我订阅了加速计更改如下类中的方法:
_bandClient.SensorManager.Accelerometer.ReadingChanged += Accelerometer_ReadingChanged;
我希望能够调用的方法(事件从类的外部处理),所以我这样做:
public async Task ToggleAccelerometer(EventHandler<BandSensorReadingEventArgs<IBandAccelerometerReading>> del)
{
if (!_sensorState[Sensor.Accelerometer])
{
_sensorState[Sensor.Accelerometer] = true;
_bandClient.SensorManager.Accelerometer.ReadingChanged += del;
await _bandClient.SensorManager.Accelerometer.StartReadingsAsync();
}
else
{
_sensorState[Sensor.Accelerometer] = false;
await _bandClient.SensorManager.Accelerometer.StopReadingsAsync();
}
}
和参数德尔实现如下:
private void Accelerometer_ValuesChanged(object sender, BandSensorReadingEventArgs<IBandAccelerometerReading> e)
{
IBandAccelerometerReading accelerometer = e.SensorReading;
Dispatcher.RunAsync(CoreDispatcherPriority.Normal,() =>
{
IBandAccelerometerReading accelerometer = e.SensorReading;
AccelXBlock.Text = accelerometer.AccelerationX.ToString();
AccelYBlock.Text = accelerometer.AccelerationY.ToString();
AccelZBlock.Text = accelerometer.AccelerationZ.ToString();
}).AsTask();
}
这按预期工作,我的问题是:
我应该改变我的计划 设计(就是我试图做一个不好的做法?),如果是的话,那么有什么更好的办法?