Я использую реактивные расширения для работы с пользовательским интерфейсом wpf, в основном у меня есть текстовое поле, которое мне нужно и для сэмплирования, и для дросселирования (некоторые вещи выполняются непрерывно во время набора текста, а некоторые - когда перестают печатать) на небольших промежутках времени (200-300 мс)
Проблема в том, что это несколько непредсказуемо и иногда сразу же запускает газ, это может быть связано с тем, что событие TextUpdated не дошло до наблюдаемого или чего-то другого с самим наблюдаемым. Я также делаю некоторые блокировки, которые могут мешать, но обычно это делается с помощью новых задач, а не в потоке пользовательского интерфейса. У меня также есть подозрение, что отладка может повлиять на поведение, так как она кажется более «некорректной», когда я устанавливаю контрольные точки
Поскольку наблюдаемое создается в потоке пользовательского интерфейса, я полагаю (возможно, по ошибке), что это таймер или все, что используется ниже, также в этом потоке, возможно, было бы неплохо создать новый поток для создания наблюдаемых, чтобы оно не мешало накладными расходами пользовательского интерфейса и потенциальной блокировкой? Как мне создать такой поток наилучшим образом, я думаю, что пустой цикл while в конце может быть не очень хорошей идеей:)
Как работает Throttle, Sample и реактивные расширения в связи с потоками под капотом?
EDIT
Кажется, проблема была в том, как я ее тестировал: P Если вы удерживаете клавишу, кажется, что она задерживается на 500 мс, прежде чем она начинает повторяться, если вы просто нажимаете на клавиши, она работает нормально. Вздох