powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Async Loading от Стивена Клири
25 сообщений из 111, страница 2 из 5
Async Loading от Стивена Клири
    #39523863
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>vb_sub, вчера, 21:32 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1271937&msg=20807374][20807374]
>...решил попробовать асинхронно загрузить данные...

Так работает:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
//-- SELECT из таблицы tbl_Государства
//====================================================================================
private void dow_Государства_Sel() {
  . . .
}

private async void ЗапросДанных() {
  . . .
  await Task.Run(new Action(dow_Государства_Sel));
  . . . 
}
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39523888
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев,
Т.е. не декларативно готовыми интерфейсами и в xaml, а руками плодя потоки?
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39523898
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vb_subесть олдскульная тема с с Dispatcher.BeginInvoke и тд, чтобы избежать фриза интерфейса, но хз кто ей сейчас пользуется.
Одним из сдерживающим моментом является то, что длительная операция запускается из конструктора ViewModel, соответственно асинхронность на высшем уровне использовать нельзя- нужно переписывать на асинхронный конструктор.
Еще неопределенности добавляет неизвестность того, что фризит объект - сама длительная операция или рендеринг GUI- нужно лезть через Perforator, но это опять не получится потому что не успею сразу запустить и Perforator и рабочий процесс, соответственно нужно загрузку переносить на какую-то кнопку. В общем чтобы проверить нужно норм так всего переписать и не факт, что узнаешь истину. Обидно, что чел так накалывает с асинхронностью.Так ты добился, что бы метод initialitemlist выполнялся не в основном потоке?
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39524093
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Roman MejtesТо есть, в рамках 1 потока, 2 асинхронные задачи будут работать не одновременно, а чередуясь друг с другом.
Очень прикольно.
Пример есть? Асинхронного вызова метода без потока?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
async void Button1_Click(object sender, EventArgs e)
{
    // тут UI поток.
    MessageBox.Show("1");

    await Task.Delay(TimeSpan.FromSeconds(3));

    // и тут UI поток тоже
    MessageBox.Show("2");
}
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39524100
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refreg,
нет, это что я планирую попробовать, когда время появится.
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39524101
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,
при количестве записей около 700 фризится на 2 секунды около.
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39524120
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев,

когда Вы вызываете Async void, то операция может выполниться и во второстепенном потоке. Но здесь проблема в том, что метод должен вызываться из конструктора класса+должно присваиваться значение свойству модели, прибинденной к Xaml, на мой взгляд это это вносит свои коррективы, которые и фризят UI.
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39524146
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vb_subPetro123,
при количестве записей около 700 фризится на 2 секунды около.почему не использовать слово Тормозит).
Две сек. это терпимо и можно забить если не растет с колич.записей.
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39524174
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,
думаю тормозит здесь не совсем уместно, потому что все действия выполняются, только интерфейс недоступен, тем более торможение это замедление в какой-либо степени, здесь отсутствие отзывчивости интерфейса.
С увеличением кол-во записей задержка растет линейно.
Хочется писать в 2к17 году без багов из прошлого.
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39524182
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КPetro123пропущено...

Очень прикольно.
Пример есть? Асинхронного вызова метода без потока?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
async void Button1_Click(object sender, EventArgs e)
{
    // тут UI поток.
    MessageBox.Show("1");

    await Task.Delay(TimeSpan.FromSeconds(3));

    // и тут UI поток тоже
    MessageBox.Show("2");
}


А асинронность?
Два сообщения друг за другом с задержкой.
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39524186
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vb_subвсе действия выполняются, только интерфейс недоступен,
Это как?
Т.е. ты можешь чай пить, а ГУИ недоступно?
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39524187
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vb_subХочется писать в 2к17 году без багов из прошлого.
Я как то думал что биндинг асинхронной коллекции уже есть платформе как у телерика.
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39524188
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Алексей Кпропущено...

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
async void Button1_Click(object sender, EventArgs e)
{
    // тут UI поток.
    MessageBox.Show("1");

    await Task.Delay(TimeSpan.FromSeconds(3));

    // и тут UI поток тоже
    MessageBox.Show("2");
}


А асинронность?
Два сообщения друг за другом с задержкой.Между сообщениями интерактивность UI не блокируется, значит асинхронно. Сравни с синхронным "неправильным" вариантом.
Код: c#
1.
2.
3.
4.
5.
6.
void Button1_Click(object sender, EventArgs e)
{
    MessageBox.Show("1");
    Thread.Sleep(3000);
    MessageBox.Show("2");
}
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39524189
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vb_sub,
Ты не ответил что будет на 100 кило записей.
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39524190
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,
Можешь из жизни пример куда это впендюрить. Это же таймер).
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39524192
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,
могу даже водки выпить, все равно он останется недоступен.
При 100к записей GUI зафризится думаю на минуту или более.
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39524195
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Алексей К,
Можешь из жизни пример куда это впендюрить. Это же таймер).
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
async void Button1_Click(object sender, EventArgs e)
{
    MessageBox.Show("Пошёл запрос...");

    var data = await DbRepository.ReadDataFromDatabaseAsync();    

    MessageBox.Show("Пришло: " + data.SomeValue);
}
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39524198
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,
Ок. Как противопол-ть sleep это интересно.
Правда не могу придумать применение.
Проехали.
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39524200
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vb_subПри 100к записей GUI зафризится думаю на минуту или более.Можно использовать виртуализацию записей. Тогда "тормоза" будут зависеть от количества элементов на экране, а не от общего числа записей.
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39524201
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Алексей К,
Ок. Как противопол-ть sleep это интересно.
Правда не могу придумать применение.
Проехали.Ok
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39524202
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vb_subPetro123,
могу даже водки выпить, все равно он останется недоступен.
При 100к записей GUI зафризится думаю на минуту или более.
Это и есть тормозит. Но как хочешь.
Значит тема моя, что я начинал.
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39524205
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КPetro123Алексей К,
Можешь из жизни пример куда это впендюрить. Это же таймер).
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
async void Button1_Click(object sender, EventArgs e)
{
    MessageBox.Show("Пошёл запрос...");

    var data = await DbRepository.ReadDataFromDatabaseAsync();    

    MessageBox.Show("Пришло: " + data.SomeValue);
}


Классно. В java такого нет. Руками чере поток делал.
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39524206
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кvb_subПри 100к записей GUI зафризится думаю на минуту или более.Можно использовать виртуализацию записей. Тогда "тормоза" будут зависеть от количества элементов на экране, а не от общего числа записей.
Вот это мы и ищем. Как будто никто не пишет больших таблиц)
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39524210
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Алексей Кпропущено...

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
async void Button1_Click(object sender, EventArgs e)
{
    MessageBox.Show("Пошёл запрос...");

    var data = await DbRepository.ReadDataFromDatabaseAsync();    

    MessageBox.Show("Пришло: " + data.SomeValue);
}



Классно. В java такого нет. Руками чере поток делал.
А поток тут точно не создаётся? Надо будет проверить.
...
Рейтинг: 0 / 0
Async Loading от Стивена Клири
    #39524213
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Вот это мы и ищем.А чё её искать, вот она. :-)

Ну или тупо включить DataGrid.EnableRowVirtualization , если не нужна ленивая закачка данных с сервера.

Ну и с этим можно ознакомиться, лишним не будет: Optimizing Performance: Controls

Petro123Как будто никто не пишет больших таблиц)"Большие таблицы на клиенте - зло" (ц) народное :-)
...
Рейтинг: 0 / 0
25 сообщений из 111, страница 2 из 5
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Async Loading от Стивена Клири
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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