powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Async Loading от Стивена Клири
25 сообщений из 111, страница 4 из 5
Async Loading от Стивена Клири
    #39524641
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vb_subпотому что не получилось достичь аналогичного эффекта с помощью тасков.Ну я и предложил разобраться с тем, что не получилось.
vb_subВ диспетчере на мой взгляд решает DispatcherPriority.Render - ставим приоритет для прорисовки.Нет, это не то.
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39524644
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,
Он до сих пор не вкл. Виртуализацию?
Тогда это велосипед.
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39524646
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,
пробовал в таски оборачивать различными способами- и через Async и через Task.Run- никак не получалось.
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39524664
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vb_subАлексей К,
пробовал в таски оборачивать различными способами- и через Async и через Task.Run- никак не получалось.
Он давал ссылку DataGrid.EnableRowVirtualization
Т.е. закачка будет только того что на экране. Т.е. 0,1 сек.
?
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39524683
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vb_subАлексей К,
пробовал в таски оборачивать различными способами- и через Async и через Task.Run- никак не получалось.
Так попробуй:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
void initialflightlist()
{
    items = new ObservableCollection<item>();
    OnPropertyChanged("items");

    string connectionString = "##";

    using (OracleConnection connection = new OracleConnection())
    {
        try
        {
            connection.ConnectionString = connectionString;

            using (OracleCommand command = connection.CreateCommand())
            {
                string sql = $"sql";

                command.CommandText = sql;

                if (connection.State != ConnectionState.Open)
                    await connection.OpenAsync();

                DbDataReader reader = await command.ExecuteReaderAsync();
                if (reader.HasRows)
                {
                    while (await reader.ReadAsync())
                    {
                        // Тут я бы добавлял в забинденный к UI список не по одной записи, а пачками по N записей.
                        items.Add(new item
                        {
                            item1 = Convert.ToString(reader["fld1"]),
                            item2 = Convert.ToDateTime(reader["fld2"])
                        });
                    }
                }
            }
        }
        catch (Exception ex)
        {
            //MessageBox.Show(ex.Message);
        }
        finally
        {
            if (connection.State == ConnectionState.Open)
                connection.Close();
        }
    }    
}
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39524708
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,
Зачем finally если using.
Зачем catch.
А то как то полезного кода 3 строки из простыни кода.
Это наверно потому что без EF.
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39524711
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

BeginInvoke это асинхронный возыв. Если к примеру в цикле вызвать 100500 раз этот метод, то они отработают все когда очередь Dispatcher'а для заданного приоритета освободится, далеко не всегда такое поведение.
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39524721
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Алексей К,
Зачем finally если using.
Зачем catch.
А то как то полезного кода 3 строки из простыни кода.
Это наверно потому что без EF.Ну я не стал упрощать, просто переделал на "обычный" async что есть.
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39524725
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesАлексей К,

BeginInvoke это асинхронный возыв. Если к примеру в цикле вызвать 100500 раз этот метод, то они отработают все когда очередь Dispatcher'а для заданного приоритета освободится, далеко не всегда такое поведение.Ну сдаётся мне, что модель не должна ждать отрисовки UI. А если UI не успевает обрабатывать отправляемые ему сообщения, то нужно менять концепцию.
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39524769
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КRoman MejtesАлексей К,

BeginInvoke это асинхронный возыв. Если к примеру в цикле вызвать 100500 раз этот метод, то они отработают все когда очередь Dispatcher'а для заданного приоритета освободится, далеко не всегда такое поведение.Ну сдаётся мне, что модель не должна ждать отрисовки UI. А если UI не успевает обрабатывать отправляемые ему сообщения, то нужно менять концепцию.
сценарии могут быть разные.
Если ждать, как раз если ждать отрисовки UI не нужно, то BeginInvoke не особо то и нужно. Как в прочем и использовать Dispatcher.
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39524801
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отрисовка UI должна быть в объекте таблица.
А то биндинга прогресс дошёл, а paint руками делать.
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39524802
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesBeginInvoke не особо то и нужно. Как в прочем и использовать Dispatcher.
+1
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39525115
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>vb_sub, сегодня, 08:39 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1271937&msg=20814371] [20814371]
Пока нашел такой вариант, в принципе устраивает.
А если так:
1. В DoWork
-a) не использовать async/await.
-b) item записывать в потокобезопасное FIFO
2. Задействовать ProgressChanged, где и переписывать item в items
3. В RunWorkerCompleted дополнительно проверить FIFO на пустоту
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39525124
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевне использовать async/await.
Любите вы извращения))).
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39525200
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesАлексей Кпропущено...
Ну сдаётся мне, что модель не должна ждать отрисовки UI. А если UI не успевает обрабатывать отправляемые ему сообщения, то нужно менять концепцию.
сценарии могут быть разные.А люди все одинаковые. Обычному человеку не нужно обновление UI 1000 раз в секунду.
Roman MejtesЕсли ждать, как раз если ждать отрисовки UI не нужно, то BeginInvoke не особо то и нужно. Как в прочем и использовать Dispatcher.Я ничего не понял. Invoke - отправка сообщения в очередь с ожиданием обработки сообщения очередью. BeginInvoke - отправка в очередь без ожидания. Модель в нормальной ситуации оповещает UI и ничего не ждёт, работает дальше, поэтому нужность Invoke, на мой взгляд, сомнительна.

Контекст синхронизации в своих глубинах использует Dispatcher.BeginInvoke, поэтому фраза " то BeginInvoke не особо то и нужно. Как в прочем и использовать Dispatcher " у меня вызывает некоторое удивление.

Мне кажется, что ты немного запутался.
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39525224
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что то у меня не разложилось в голове по полочкам).
Писать ведь можно по разному.
Если мы по MVVM, то например в андроиде это:
Код: c#
1.
UserViewModel extends BaseObservable // ViewModel с БЛ


т.е. не хочется в слое бизнес логики заниматься какими то invoke и сообщениями. Техническими вещами.
Далее биндинг:
Код: c#
1.
2.
3.
4.
5.
6.
        setContentView(R.layout.activity_main);
        //binding+ ActivityMainBinding - generate from R.layout.activity_main
        final ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
        UserViewModel userViewModel = new UserViewModel("TestBinding");
        binding.setUserViewModel(userViewModel);
        //binding-


Я так понял, что у ТС - MVP
И собственно всё. Больше кода то нету.
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39525238
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КPetro123Вот это мы и ищем.А чё её искать, вот она. :-)
написано что в C# виртуализация не поддерживается и показан велосипед самописка
Алексей КНу или тупо включить DataGrid.EnableRowVirtualization , если не нужна ленивая закачка данных с сервера.
не понял отличия этого метода и приведённого кода вами и ТС.
Если просто галку включить тормозить вед не будет?
Алексей К"Большие таблицы на клиенте - зло" (ц) народное :-)
это для веб справедливо (на данном этапе технологий).
Для десктопа размер тысяч данных не должно быть проблемой (девэкспресс).
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39525240
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,
Отсюда вопрос прежний. Все в десктопе пишут самописки как на хабре или ставят галку по вашей ссылке?
Или у всех телерик с интерфейсом VirtualQueryableCollectionView<T>
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39525244
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КА люди все одинаковые. Обычному человеку не нужно обновление UI 1000 раз в секунду.
IMHO по простому логика сообщений должна быть такая:
- основной поток загружает табличку и дал команду на загрузку коллекции
- на OnShow показал что успело загрузиться БЕЗ ТОРМОЗОВ
- в доп потоке продолжает грузится но основной поток не трогается
- только при скроллинге берётся новая порция самим гридом, а не коллекция пихает в грид порции.
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39525294
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Алексей К,
Отсюда вопрос прежний. Все в десктопе пишут самописки как на хабре или ставят галку по вашей ссылке?
Или у всех телерик с интерфейсом VirtualQueryableCollectionView<T>Мы похоже говорим немного о разных вещах.

1. Ленивая загрузка данных с сервера - отсутствует, кому надо, те пишут велосипеды "как на хабре". Это то, чего ты хочешь, как я понял.

2. Виртуализация записей WPF - в большинстве контролов по умолчанию включена, в этом режиме создаются контейнеры только для отображаемых записей. Я упомянул об этом из-за того, что выше говорилось о тормозах WPF при большом количестве записей, что на самом деле не так. Тормоза, видимо, связаны просто с загрузкой большого объёма данных в модель, WPF тут тормозов не добавляет.
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39525297
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Алексей КА люди все одинаковые. Обычному человеку не нужно обновление UI 1000 раз в секунду.
IMHO по простому логика сообщений должна быть такая:
- основной поток загружает табличку и дал команду на загрузку коллекции
- на OnShow показал что успело загрузиться БЕЗ ТОРМОЗОВ
- в доп потоке продолжает грузится но основной поток не трогается
- только при скроллинге берётся новая порция самим гридом, а не коллекция пихает в грид порции.И так можно. Думаю, что здесь разные способы имеют право на жизнь. :-)
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39525306
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КPetro123Алексей К,
Отсюда вопрос прежний. Все в десктопе пишут самописки как на хабре или ставят галку по вашей ссылке?
Или у всех телерик с интерфейсом VirtualQueryableCollectionView<T>Мы похоже говорим немного о разных вещах.

1. Ленивая загрузка данных с сервера - отсутствует, кому надо, те пишут велосипеды "как на хабре". Это то, чего ты хочешь, как я понял.

2. Виртуализация записей WPF - в большинстве контролов по умолчанию включена, в этом режиме создаются контейнеры только для отображаемых записей. Я упомянул об этом из-за того, что выше говорилось о тормозах WPF при большом количестве записей, что на самом деле не так. Тормоза, видимо, связаны просто с загрузкой большого объёма данных в модель, WPF тут тормозов не добавляет.
Я автор ищем способы чтобы табла в ГУИ не тормозила.
Правда он называет это словом заморозка, а слово ленивая я от тебя здесь первый раз услышал.
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39525307
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КТормоза, видимо, связаны просто с загрузкой большого объёма данных в модель, WPF тут тормозов не добавляет.
Вот и пойми вас.
Конечно, тормоза связаны с загрузкой в модель, т.к. тянуть на клиента сразу всю таблу накладно.
Ну, давай не про WPF, а целиком про платформу. Т.к. большие таблицы везде есть.
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39525308
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КИ так можно. Думаю, что здесь разные способы имеют право на жизнь. :-)
OK
Ищем Минимальный код для Больших таблиц чтобы не тормозило.
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39525309
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кразные способы
почитал в сети.
Немного другой код получается при редактировании коллекции с клиента на сервер при больших списках.
Будет ошибка кода доступа к объекту из потока где он не был создан.
Получается, что если только читаем, то код там должен быть простой как 5 копеек.
Если с редактированием, то нужно перебрасывать из потокового списка коллекции в коллекцию биндинга в потоке ГУИ.
Получается 2 варианта кода imho.
...
Рейтинг: 0 / 0
25 сообщений из 111, страница 4 из 5
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Async Loading от Стивена Клири
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]