Вызов метода регулирования с помощью Rx - PullRequest
0 голосов
/ 22 марта 2019

Я знал о Rx уже несколько лет, но никогда не использовал его, однако теперь у меня есть сценарий, в котором я думаю, что он может быть полезен.

У меня есть класс, который читает данные из внешнего инструментасотни раз в секунду.Второй класс должен взять «образец» этих данных, каждую (скажем) полсекунды.В настоящее время я делаю что-то вроде этого: -

public class DataCollector
{
    private DataProcessor _processor;

    public void DataCollectionMethod()
    {
        while (true)
        {
            var data = GetDataFromInstrument();
            _processor.ProcessData(data);
        }
    }
}

public class DataProcessor
{
    DateTime _lastProcessTime;

    public void ProcessData(int[] data)
    {
        if (DateTime.Now.Subtract(_lastProcessTime).TotalMilliseconds > 500)
        {
            .. do something with the data
            _lastProcessTime = DateTime.Now;
        }
    }
}

Можно ли изменить этот код для использования Rx и регулирования?Итак, это не самое сложное из решений в его нынешнем виде, но я думаю, что регулирование Rx может сделать код немного чище и более «самоописываемым».

Одно предостережение - в реальной системеКласс DataCollector является чем-то вроде «черного ящика», и хотя я могу его изменить, важно, чтобы он оставался свободным от «знания о времени», которое должно находиться в DataProcessor.

...