Re[8]: Reactive Extensions
От: okon  
Дата: 25.11.19 04:53
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Здравствуйте, okon, Вы писали:


O>>
O>>inputObservable
O>>      .Throttle(500)
O>>      .CombineLatest(input => GetList(input))
O>>      .OnNext( result => texbBox.text = result );
O>>


O>>Ну и по событию кидать в inputObservable новые данные


S>Давайте весь код, чтобы сразу запустить. Я дал весь, на форму только кинуть 2 TextBox.


S>И добавьте textBox2.Clear(); после задержки в 500 мс.


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


   Observable<string[]> inputObservable = new Observable<string[]>();

   // любое место где инициализация формы
   void Init()
   {
    inputObservable
         .Throttle(500) 
         .CombineLatest(input => GetList(input))
         .Subscribe( result => texbBox.text = result );
   }

   void KeyDown(EventArgs e) => inputObservable.OnNext(e);



Вот это твой эквивалент этой же логики

 private volatile int _lastRequestId;

        private void textBox1_KeyUp(object sender, KeyEventArgs e)
        {
            _lastRequestId++;
            FillItems();
        }

        private async void FillItems()
        {
            var requestId = _lastRequestId;

            await Task.Delay(500);

            if (requestId != _lastRequestId)
                return;

            textBox2.Clear();

            var items = await MakeRequest(textBox1.Text);

            if (_lastRequestId != requestId)
                return;

            textBox2.Text = string.Join("\r\n", items);
        }
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Отредактировано 25.11.2019 5:02 okon . Предыдущая версия . Еще …
Отредактировано 25.11.2019 4:57 okon . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.