Ну, вы можете просто взять то, что у вас есть, и поместить в цикл, например:
private async void StartReading()
{
while (true)
{
FloatValueLabel.Content = (await srvProtocol.ReadFloat("ReadFloatX")).ToString();
await Task.Delay(1000);
}
}
Хотя лично мне не нравится цикл "бесконечный асинхронный".Единственный способ остановить цикл - вызвать исключение (ошибка или отмена).
Библиотека Rx больше подходит для подписок.Он допускает высокий уровень «краткости», но имеет более крутой график обучения.
Вы также можете заключить всю логику подписки в Model / ViewModel.Это особенно имеет смысл при «обновлении» той же концептуальной ценности.В этом случае StartReading
будет методом для вашей Model / ViewModel.Он будет использовать async
(для бесконечного асинхронного цикла) или ObserveOn
(для Rx), чтобы перенести обновления в поток пользовательского интерфейса, а затем использовать стандарт INotifyPropertyChanged
/ ObservableCollection
для косвенного обновления пользовательского интерфейса.