Сообщение Re[3]: Reactive Extensions от 24.11.2019 13:50
Изменено 24.11.2019 17:01 Shmj
Re[3]: Reactive Extensions
Здравствуйте, okon, Вы писали:
O>Очень простая задача встречающаяся практически в любом интерфейсе — нужно отобразить список Items[] GetList(string filter) который формируется долго, задержка плавающая т.е. может от 0.1 секунды ответ прийти до 5 секунд, пользователь вводит данные в поле filter, запрос сразу отправлять не требуется, только после 500 миллисекунд после того как пользователь перестал вводить данные. Нужно отображать актуальный список в UI соотвествующий последнему введеному filter.
Примерно так (набросал идею):
O>Потом немного усложним условие — есть еще Checkbox который также отвечает за алгоритм фильтрации ( например Ignore Case в фильтре ).
И чем это усложнит?
O>Очень простая задача встречающаяся практически в любом интерфейсе — нужно отобразить список Items[] GetList(string filter) который формируется долго, задержка плавающая т.е. может от 0.1 секунды ответ прийти до 5 секунд, пользователь вводит данные в поле filter, запрос сразу отправлять не требуется, только после 500 миллисекунд после того как пользователь перестал вводить данные. Нужно отображать актуальный список в UI соотвествующий последнему введеному filter.
Примерно так (набросал идею):
private volatile bool _changed;
private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
_changed = true;
FillItems();
}
private async void FillItems()
{
_changed = false;
await Task.Delay(500);
if (_changed)
return;
textBox2.Clear();
var items = await MakeRequest(textBox1.Text);
if (_changed)
return;
textBox2.Text = string.Join("\r\n", items);
}
Random _random = new Random();
private async Task<List<string>> MakeRequest(string q)
{
await Task.Delay(_random.Next(100, 5000));
return await Task.FromResult(new List<string>()
{
q + "пункт 1 ",
q + "пункт 2",
q + "пункт 3",
});
}
O>Потом немного усложним условие — есть еще Checkbox который также отвечает за алгоритм фильтрации ( например Ignore Case в фильтре ).
И чем это усложнит?
Re[3]: Reactive Extensions
Здравствуйте, okon, Вы писали:
O>Очень простая задача встречающаяся практически в любом интерфейсе — нужно отобразить список Items[] GetList(string filter) который формируется долго, задержка плавающая т.е. может от 0.1 секунды ответ прийти до 5 секунд, пользователь вводит данные в поле filter, запрос сразу отправлять не требуется, только после 500 миллисекунд после того как пользователь перестал вводить данные. Нужно отображать актуальный список в UI соотвествующий последнему введеному filter.
Примерно так (набросал идею), обновленная версия: http://rsdn.org/forum/dotnet/7596599.1
O>Очень простая задача встречающаяся практически в любом интерфейсе — нужно отобразить список Items[] GetList(string filter) который формируется долго, задержка плавающая т.е. может от 0.1 секунды ответ прийти до 5 секунд, пользователь вводит данные в поле filter, запрос сразу отправлять не требуется, только после 500 миллисекунд после того как пользователь перестал вводить данные. Нужно отображать актуальный список в UI соотвествующий последнему введеному filter.
Примерно так (набросал идею), обновленная версия: http://rsdn.org/forum/dotnet/7596599.1
Автор: Shmj
Дата: 24.11.19
Дата: 24.11.19