Сообщение Re[8]: Reactive Extensions от 25.11.2019 4:53
Изменено 25.11.2019 5:02 okon
Re[8]: Reactive Extensions
Здравствуйте, Shmj, Вы писали:
S>Здравствуйте, okon, Вы писали:
O>>
O>>Ну и по событию кидать в inputObservable новые данные
S>Давайте весь код, чтобы сразу запустить. Я дал весь, на форму только кинуть 2 TextBox.
S>И добавьте textBox2.Clear(); после задержки в 500 мс.
Сори, но мне лично лень делать под тебя отдельный проект и проверять компиляцию.
Я показал как выглядит решение на Rx, если тебя прям весь код интересует то могу написать примерно с точностью до типов, а дальше сам ковыряй.
Те количество строк не должно измениться в решении , это все решение :
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);
Re[8]: Reactive Extensions
Здравствуйте, Shmj, Вы писали:
S>Здравствуйте, okon, Вы писали:
O>>
O>>Ну и по событию кидать в inputObservable новые данные
S>Давайте весь код, чтобы сразу запустить. Я дал весь, на форму только кинуть 2 TextBox.
S>И добавьте textBox2.Clear(); после задержки в 500 мс.
Сори, но мне лично лень делать под тебя отдельный проект и проверять компиляцию.
Я показал как выглядит решение на Rx, если тебя прям весь код интересует то могу написать примерно с точностью до типов, а дальше сам ковыряй.
Те количество строк не должно измениться в решении , это все решение :
Вот это твой эквивалент этой же логики
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);
}