|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Всем привет, решил попробовать асинхронно загрузить данные по аналогии с https://msdn.microsoft.com/ru-ru/magazine/dn605875.aspx. Код: 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. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60.
Код: xml 1.
В итоге при загрузке все равно визуальный интерфейс фризится. Когда ставлю брекпоинт на return ListItemtemp , отладчик показывает, что выполнение происходит в основном потоке, хотя в примере из статьи- во второстепенном. У кого-то работал аналогичный подход корректно? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2017, 21:32 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
vb_sub, Мне где то говорили что в wpf ленивая загрузка есть из коробки. Тогда не понял ваш сабж. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2017, 08:13 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
vb_sub, 20 сек открывается 60 килозаписей. Есть Lazy из коробки в платформе? Но я пока приостановил тот сабж. Другие задачи поставили. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2017, 08:25 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Petro123, Вы имеете ввиду скорее всего Priority Binding, но это когда нужно показать что-то, пока не загрузится основной Binding.Не знаю фризится при этом интерфейс или нет, но это к сожалению не то, что нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2017, 08:25 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Petro123, lazy это когда объект инициализируется при первой потребности в нем- соответственно все равно, когда лист item будет инициализироваться, то он заморозит интерфейс. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2017, 08:27 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
vb_sub, "Показать что то, пока...", фризится, тормозит - это всё одно и то же. Разве нет? Ты опиши задачу от пользователя. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2017, 09:07 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
vb_sublazy Да. Вроде решили, что это слово говорит о ленивой загрузке не основной коллекции, а чилдрен подчиненных объектов. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2017, 09:10 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
vb_subрешил попробовать асинхронно загрузить данные Один в один мой топик. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2017, 09:12 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
vb_subВ итоге при загрузке все равно визуальный интерфейс фризится. Когда ставлю брекпоинт на return ListItemtemp, отладчик показывает, что выполнение происходит в основном потоке , хотя в примере из статьи- во второстепенном. У кого-то работал аналогичный подход корректно?А что, если вставить строку: Код: c# 1. 2.
Выполнение так и останется в основном потоке? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2017, 14:31 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Асинхронное выполнение <> многопоточное. попробуйте просто обернуть в свой Task, можно даже свой планировщик тогда определить ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2017, 15:11 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
refreg, тогда вообще дичь получается- программа падает в бесконечный цикл и будет бесконечно возвращать return через значение временной задержки (данные в UI не передаются). Когда смотрел статус задачи из примера то ее статус RunToCopletion, если же ставлю задержку в свой пример, то там все время статус WaitForActivation-то есть она не успевает запуститься. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2017, 15:25 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
>vb_sub, вчера, 21:32 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1271937&msg=20807374][20807374] >...решил попробовать асинхронно загрузить данные ... Посмотри здесь . С уважением, Владимир ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2017, 15:41 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
vb_subrefreg, тогда вообще дичь получается- программа падает в бесконечный цикл и будет бесконечно возвращать return через значение временной задержки (данные в UI не передаются). Когда смотрел статус задачи из примера то ее статус RunToCopletion, если же ставлю задержку в свой пример, то там все время статус WaitForActivation-то есть она не успевает запуститься.Ну попробуй время уменьшить до 1 милисекунды. Но это не решение твоей проблемы. Проблема глубже. Когда ты вызываешь асинхронный метод, то нет никакой гарантии, что асинхронный метод создаст задачу на выполнение. Метод может выполняться синхронно. Например, может быть такая логика - пробуем выполнить синхронно. Если за какое-то время ответ получить не удалось, создаем задачу. У тебя в коде много быстрых асинхронных вызовов - и ты, не можешь быть уверен, что они вызываются действительно асинхронно. В данном случае, тебе надо быть уверенным, что метод initialitemlist будет выполняться в отдельном потоке. Поэтому желательно, создать отдельный поток самому. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2017, 15:59 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
refregПоэтому желательно, создать отдельный поток самому. Это будет ещё на пару экранов кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2017, 16:02 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Roman MejtesАсинхронное выполнение <> многопоточное Везде где делал await смотрел в отладчике, код выполнялся не в потоке ГУИ. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2017, 16:04 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Petro123refregПоэтому желательно, создать отдельный поток самому. Это будет ещё на пару экранов кода.Task.Factory.StartNew ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2017, 16:05 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Petro123Roman MejtesАсинхронное выполнение <> многопоточное Везде где делал await смотрел в отладчике, код выполнялся не в потоке ГУИ.ТС не обладает таким везением ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2017, 16:08 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Я вот смотрю, аффтар хочет не тормозя ГУИ загрузить свою коллекцию items для показа в ГУИ. Вероятно сейчас загрузка у него секунд 15. Получается руками надо в wpf писать такую фичу? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2017, 16:09 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
refregТС не обладает таким везением дай ссылку как и кто определяет в потоке будет код или решит не надо). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2017, 16:11 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
refregTask.Factory.StartNew У меня после wait разумеется метод: Task myMetod { Return Task.Run ( .. А как иначе)) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2017, 16:18 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
refregКогда ты вызываешь асинхронный метод, то нет никакой гарантии, что асинхронный метод создаст задачу на выполнение. Я так понял, ты про случай когда метод писал не ты сам. Ок. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2017, 16:25 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
refregКогда ты вызываешь асинхронный метод, то нет никакой гарантии, что асинхронный метод создаст задачу на выполнение. Метод может выполняться синхронно. Вызывая Async метод мы в любом случае выполняем таск (задачу), вопрос лишь в том, в каком потоке эта задача будет выполняться. асинхронные операции могут выполняться в однопоточном приложении и много поточком. Им нет до этого никакого дела. Асинхронной операцией называют ту, которая может прервать своё выполнение, а затем продолжить. То есть, в рамках 1 потока, 2 асинхронные задачи будут работать не одновременно, а чередуясь друг с другом. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2017, 16:40 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
и сам по себе Task обеспечивает именно асинхронность, а за многопоточное выполнение тасков отвечает его планировщик. Именно планировщик запускает таски в пуле потоков, сами по себе они в других потоках выполняться не будут. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2017, 16:42 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Roman MejtesТо есть, в рамках 1 потока, 2 асинхронные задачи будут работать не одновременно, а чередуясь друг с другом. Очень прикольно. Пример есть? Асинхронного вызова метода без потока? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2017, 16:46 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
есть олдскульная тема с с Dispatcher.BeginInvoke и тд, чтобы избежать фриза интерфейса, но хз кто ей сейчас пользуется. Одним из сдерживающим моментом является то, что длительная операция запускается из конструктора ViewModel, соответственно асинхронность на высшем уровне использовать нельзя- нужно переписывать на асинхронный конструктор. Еще неопределенности добавляет неизвестность того, что фризит объект- сама длительная операция или рендеринг GUI- нужно лезть через Perforator, но это опять не получится потому что не успею сразу запустить и Perforator и рабочий процесс, соответственно нужно загрузку переносить на какую-то кнопку. В общем чтобы проверить нужно норм так всего переписать и не факт, что узнаешь истину. Обидно, что чел так накалывает с асинхронностью. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2017, 16:52 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
>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.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2017, 17:04 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
ВМоисеев, Т.е. не декларативно готовыми интерфейсами и в xaml, а руками плодя потоки? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2017, 17:17 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
vb_subесть олдскульная тема с с Dispatcher.BeginInvoke и тд, чтобы избежать фриза интерфейса, но хз кто ей сейчас пользуется. Одним из сдерживающим моментом является то, что длительная операция запускается из конструктора ViewModel, соответственно асинхронность на высшем уровне использовать нельзя- нужно переписывать на асинхронный конструктор. Еще неопределенности добавляет неизвестность того, что фризит объект - сама длительная операция или рендеринг GUI- нужно лезть через Perforator, но это опять не получится потому что не успею сразу запустить и Perforator и рабочий процесс, соответственно нужно загрузку переносить на какую-то кнопку. В общем чтобы проверить нужно норм так всего переписать и не факт, что узнаешь истину. Обидно, что чел так накалывает с асинхронностью.Так ты добился, что бы метод initialitemlist выполнялся не в основном потоке? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2017, 17:24 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Petro123Roman MejtesТо есть, в рамках 1 потока, 2 асинхронные задачи будут работать не одновременно, а чередуясь друг с другом. Очень прикольно. Пример есть? Асинхронного вызова метода без потока? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 07:59 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
refreg, нет, это что я планирую попробовать, когда время появится. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 08:47 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Petro123, при количестве записей около 700 фризится на 2 секунды около. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 08:48 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
ВМоисеев, когда Вы вызываете Async void, то операция может выполниться и во второстепенном потоке. Но здесь проблема в том, что метод должен вызываться из конструктора класса+должно присваиваться значение свойству модели, прибинденной к Xaml, на мой взгляд это это вносит свои коррективы, которые и фризят UI. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 09:18 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
vb_subPetro123, при количестве записей около 700 фризится на 2 секунды около.почему не использовать слово Тормозит). Две сек. это терпимо и можно забить если не растет с колич.записей. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 09:49 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Petro123, думаю тормозит здесь не совсем уместно, потому что все действия выполняются, только интерфейс недоступен, тем более торможение это замедление в какой-либо степени, здесь отсутствие отзывчивости интерфейса. С увеличением кол-во записей задержка растет линейно. Хочется писать в 2к17 году без багов из прошлого. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 10:28 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Алексей КPetro123пропущено... Очень прикольно. Пример есть? Асинхронного вызова метода без потока? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
А асинронность? Два сообщения друг за другом с задержкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 10:36 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
vb_subвсе действия выполняются, только интерфейс недоступен, Это как? Т.е. ты можешь чай пить, а ГУИ недоступно? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 10:38 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
vb_subХочется писать в 2к17 году без багов из прошлого. Я как то думал что биндинг асинхронной коллекции уже есть платформе как у телерика. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 10:39 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Petro123Алексей Кпропущено... Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
А асинронность? Два сообщения друг за другом с задержкой.Между сообщениями интерактивность UI не блокируется, значит асинхронно. Сравни с синхронным "неправильным" вариантом. Код: c# 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 10:40 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
vb_sub, Ты не ответил что будет на 100 кило записей. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 10:41 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Алексей К, Можешь из жизни пример куда это впендюрить. Это же таймер). ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 10:42 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Petro123, могу даже водки выпить, все равно он останется недоступен. При 100к записей GUI зафризится думаю на минуту или более. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 10:45 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Petro123Алексей К, Можешь из жизни пример куда это впендюрить. Это же таймер). Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 10:48 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Алексей К, Ок. Как противопол-ть sleep это интересно. Правда не могу придумать применение. Проехали. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 10:49 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
vb_subПри 100к записей GUI зафризится думаю на минуту или более.Можно использовать виртуализацию записей. Тогда "тормоза" будут зависеть от количества элементов на экране, а не от общего числа записей. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 10:50 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Petro123Алексей К, Ок. Как противопол-ть sleep это интересно. Правда не могу придумать применение. Проехали.Ok ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 10:50 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
vb_subPetro123, могу даже водки выпить, все равно он останется недоступен. При 100к записей GUI зафризится думаю на минуту или более. Это и есть тормозит. Но как хочешь. Значит тема моя, что я начинал. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 10:50 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Алексей КPetro123Алексей К, Можешь из жизни пример куда это впендюрить. Это же таймер). Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
Классно. В java такого нет. Руками чере поток делал. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 10:53 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Алексей Кvb_subПри 100к записей GUI зафризится думаю на минуту или более.Можно использовать виртуализацию записей. Тогда "тормоза" будут зависеть от количества элементов на экране, а не от общего числа записей. Вот это мы и ищем. Как будто никто не пишет больших таблиц) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 10:54 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Petro123Алексей Кпропущено... Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
Классно. В java такого нет. Руками чере поток делал. А поток тут точно не создаётся? Надо будет проверить. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 11:01 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Petro123Вот это мы и ищем.А чё её искать, вот она. :-) Ну или тупо включить DataGrid.EnableRowVirtualization , если не нужна ленивая закачка данных с сервера. Ну и с этим можно ознакомиться, лишним не будет: Optimizing Performance: Controls Petro123Как будто никто не пишет больших таблиц)"Большие таблицы на клиенте - зло" (ц) народное :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 11:03 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Petro123Petro123пропущено... Классно. В java такого нет. Руками чере поток делал. А поток тут точно не создаётся? Надо будет проверить.Всё зависит от внутренностей ReadDataFromDatabaseAsync. Обычно это работает через порты завершения ввода/вывода. А всё содержимое метода Button1_Click в данном примере работает в UI потоке. Грубо говоря, в момент завершения "таска" выполняется Dispatcher.BeginInvoke, в котором выполняется код, расположенный после await. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 11:07 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Алексей К Код: c# 1.
Погоди. Внутри же поток? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 11:19 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Алексей КОбычно это работает через порты з Мы не про веб говорим. Значит твой второй пример не годен. Без потока только sleep и можно создать. Как игрушку. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 11:22 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Petro123Алексей К Код: c# 1.
Погоди. Внутри же поток?Ну там может быть что угодно, обычно там выполнение через порт завершения ввода/вывода , тот же пул потоков по сути. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 11:23 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Petro123Алексей КОбычно это работает через порты з Мы не про веб говорим.А какая разница, веб или не веб. Асинхронный ввод/вывод никто не запрещает использовать и в WPF приложениях. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 11:25 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Алексей К, А я о том что без потоков асинхронности нету выше и сказал. Task.Delay это игрушка ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 11:26 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Petro123Алексей К, А я о том что без потоков асинхронности нету выше и сказал. Task.Delay это игрушкаНу если в продолжение этой темы, то опять не соглашусь. Ну вот пример без таймера. Продолжение инициируется действиями пользователя. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 11:32 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Алексей К, Я написал твой тест в проекте. Твой await требует метод с возвратом Task Т.е. вернулись к моему коду выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 11:38 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Petro123Алексей К, Я написал твой тест в проекте. Твой await требует метод с возвратом Task Т.е. вернулись к моему коду выше.Думаю, что TaskCompletionSource не создаёт потоков. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 11:42 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Алексей КНу вот пример без таймера Поставь ТЯЖЁлый метод for с вычислениями. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 11:45 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Алексей КPetro123Алексей К, Я написал твой тест в проекте. Твой await требует метод с возвратом Task Т.е. вернулись к моему коду выше.Думаю, что TaskCompletionSource не создаёт потоков. Т.к. это GOTO )))) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 11:47 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Petro123Алексей КНу вот пример без таймера Поставь ТЯЖЁлый метод for с вычислениями.Это да, это обычно запускается через "тхридпул". Но я привёл пример асинхронности без многопоточности, когда продолжение выполнения асинхронной операции инициируется действиями пользователя, всё работает в UI потоке через очередь сообщений. Вон, в JavaScript многопоточности нет, а асинхронность есть, аж бесит иногда. :-) Petro123Алексей Кпропущено... Думаю, что TaskCompletionSource не создаёт потоков. Т.к. это GOTO ))))Ну можно и так сказать. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 11:57 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Алексей КВон, в JavaScript многопоточности нет, а асинхронность есть, аж бесит иногда. :-) Да. Тем более я с Java и мне странно всё это))). Аффтар пусть пробует твои ссылки. Я попозже обязательно. Текучка. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 12:39 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Странно, что про RX никто не вспомнил. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 13:57 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
>vb_sub, сегодня, 10:28 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1271937&msg=20811142] [20811142] >...думаю тормозит здесь не совсем уместно... Посмотри здесь ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 14:03 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныСтранно, что про RX никто не вспомнил.Время похоронило этот проект. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 14:16 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
ВМоисеевдумаю тормозит здесь не совсем уместно... Ну, если по ссылке ограничение ресурсов проца для тебя не тормоза, тогда конечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 14:28 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
ВМоисеев>vb_sub, сегодня, 10:28 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1271937&msg=20811142] [20811142] >...думаю тормозит здесь не совсем уместно... Посмотри здесь Трудности перевода: Оригинал: async methods need to have an await keyword in their body or they will never yield! ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2017, 19:45 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Пока нашел такой вариант, в принципе устраивает. Код: 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. 49. 50. 51. 52. 53.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2017, 08:39 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
vb_sub, А зачем 3 раза await, когда можно один раз на весь код сразу. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2017, 09:03 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
И как себя ведёт ГУИ. Сразу показ первых записей и потом докачка остальных или что? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2017, 09:05 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Petro123vb_sub, А зачем 3 раза await, когда можно один раз на весь код сразу.Чтобы поток не висел в ожидании ввода/вывода на всех этапах запроса, с этим всё в порядке. Тут непонятно накой использовать BackgroundWorker и Dispatcher.Invoke ( тут лучше BeginInvoke ), когда лучше научиться пользоваться "тасками" и async|await. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2017, 09:08 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Petro123, здесь есть 2 стратегии 1) одним махом присваиваем все элементы коллекции свойству ViewModel. Код: c# 1.
Этот вариант для меня нежелателен, потому что на мой взгляд больше просаживает GUI 2)добавление по одному элементу, как в примере - более желательный вариант, потому что визуально не видно заморозки GUI Каждый элемент прорисовывается при добавлении. Можешь заценить как визуально выглядит по этой ссылке https://stackoverflow.com/questions/44302328/how-to-properly-improve-itemscontrol-loading-and-avoid-freezing ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2017, 09:37 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Алексей К, потому что не получилось достичь аналогичного эффекта с помощью тасков. В диспетчере на мой взгляд решает DispatcherPriority.Render - ставим приоритет для прорисовки. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2017, 09:39 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
vb_subКаждый элемент прорисовывается при добавлении.При включенной виртуализации записей каждый элемент не прорисовывается. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2017, 09:41 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
vb_subпотому что не получилось достичь аналогичного эффекта с помощью тасков.Ну я и предложил разобраться с тем, что не получилось. vb_subВ диспетчере на мой взгляд решает DispatcherPriority.Render - ставим приоритет для прорисовки.Нет, это не то. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2017, 09:43 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Алексей К, Он до сих пор не вкл. Виртуализацию? Тогда это велосипед. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2017, 09:48 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Алексей К, пробовал в таски оборачивать различными способами- и через Async и через Task.Run- никак не получалось. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2017, 09:50 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
vb_subАлексей К, пробовал в таски оборачивать различными способами- и через Async и через Task.Run- никак не получалось. Он давал ссылку DataGrid.EnableRowVirtualization Т.е. закачка будет только того что на экране. Т.е. 0,1 сек. ? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2017, 10:08 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
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.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2017, 10:36 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Алексей К, Зачем finally если using. Зачем catch. А то как то полезного кода 3 строки из простыни кода. Это наверно потому что без EF. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2017, 11:05 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Алексей К, BeginInvoke это асинхронный возыв. Если к примеру в цикле вызвать 100500 раз этот метод, то они отработают все когда очередь Dispatcher'а для заданного приоритета освободится, далеко не всегда такое поведение. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2017, 11:06 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Petro123Алексей К, Зачем finally если using. Зачем catch. А то как то полезного кода 3 строки из простыни кода. Это наверно потому что без EF.Ну я не стал упрощать, просто переделал на "обычный" async что есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2017, 11:18 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Roman MejtesАлексей К, BeginInvoke это асинхронный возыв. Если к примеру в цикле вызвать 100500 раз этот метод, то они отработают все когда очередь Dispatcher'а для заданного приоритета освободится, далеко не всегда такое поведение.Ну сдаётся мне, что модель не должна ждать отрисовки UI. А если UI не успевает обрабатывать отправляемые ему сообщения, то нужно менять концепцию. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2017, 11:20 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Алексей КRoman MejtesАлексей К, BeginInvoke это асинхронный возыв. Если к примеру в цикле вызвать 100500 раз этот метод, то они отработают все когда очередь Dispatcher'а для заданного приоритета освободится, далеко не всегда такое поведение.Ну сдаётся мне, что модель не должна ждать отрисовки UI. А если UI не успевает обрабатывать отправляемые ему сообщения, то нужно менять концепцию. сценарии могут быть разные. Если ждать, как раз если ждать отрисовки UI не нужно, то BeginInvoke не особо то и нужно. Как в прочем и использовать Dispatcher. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2017, 12:14 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Отрисовка UI должна быть в объекте таблица. А то биндинга прогресс дошёл, а paint руками делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2017, 12:40 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Roman MejtesBeginInvoke не особо то и нужно. Как в прочем и использовать Dispatcher. +1 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2017, 12:41 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
>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 на пустоту ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2017, 19:16 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
ВМоисеевне использовать async/await. Любите вы извращения))). ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2017, 19:41 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Roman MejtesАлексей Кпропущено... Ну сдаётся мне, что модель не должна ждать отрисовки UI. А если UI не успевает обрабатывать отправляемые ему сообщения, то нужно менять концепцию. сценарии могут быть разные.А люди все одинаковые. Обычному человеку не нужно обновление UI 1000 раз в секунду. Roman MejtesЕсли ждать, как раз если ждать отрисовки UI не нужно, то BeginInvoke не особо то и нужно. Как в прочем и использовать Dispatcher.Я ничего не понял. Invoke - отправка сообщения в очередь с ожиданием обработки сообщения очередью. BeginInvoke - отправка в очередь без ожидания. Модель в нормальной ситуации оповещает UI и ничего не ждёт, работает дальше, поэтому нужность Invoke, на мой взгляд, сомнительна. Контекст синхронизации в своих глубинах использует Dispatcher.BeginInvoke, поэтому фраза " то BeginInvoke не особо то и нужно. Как в прочем и использовать Dispatcher " у меня вызывает некоторое удивление. Мне кажется, что ты немного запутался. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2017, 07:30 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Что то у меня не разложилось в голове по полочкам). Писать ведь можно по разному. Если мы по MVVM, то например в андроиде это: Код: c# 1.
т.е. не хочется в слое бизнес логики заниматься какими то invoke и сообщениями. Техническими вещами. Далее биндинг: Код: c# 1. 2. 3. 4. 5. 6.
Я так понял, что у ТС - MVP И собственно всё. Больше кода то нету. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2017, 10:11 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Алексей КPetro123Вот это мы и ищем.А чё её искать, вот она. :-) написано что в C# виртуализация не поддерживается и показан велосипед самописка Алексей КНу или тупо включить DataGrid.EnableRowVirtualization , если не нужна ленивая закачка данных с сервера. не понял отличия этого метода и приведённого кода вами и ТС. Если просто галку включить тормозить вед не будет? Алексей К"Большие таблицы на клиенте - зло" (ц) народное :-) это для веб справедливо (на данном этапе технологий). Для десктопа размер тысяч данных не должно быть проблемой (девэкспресс). ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2017, 10:46 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Алексей К, Отсюда вопрос прежний. Все в десктопе пишут самописки как на хабре или ставят галку по вашей ссылке? Или у всех телерик с интерфейсом VirtualQueryableCollectionView<T> ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2017, 10:48 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Алексей КА люди все одинаковые. Обычному человеку не нужно обновление UI 1000 раз в секунду. IMHO по простому логика сообщений должна быть такая: - основной поток загружает табличку и дал команду на загрузку коллекции - на OnShow показал что успело загрузиться БЕЗ ТОРМОЗОВ - в доп потоке продолжает грузится но основной поток не трогается - только при скроллинге берётся новая порция самим гридом, а не коллекция пихает в грид порции. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2017, 10:52 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Petro123Алексей К, Отсюда вопрос прежний. Все в десктопе пишут самописки как на хабре или ставят галку по вашей ссылке? Или у всех телерик с интерфейсом VirtualQueryableCollectionView<T>Мы похоже говорим немного о разных вещах. 1. Ленивая загрузка данных с сервера - отсутствует, кому надо, те пишут велосипеды "как на хабре". Это то, чего ты хочешь, как я понял. 2. Виртуализация записей WPF - в большинстве контролов по умолчанию включена, в этом режиме создаются контейнеры только для отображаемых записей. Я упомянул об этом из-за того, что выше говорилось о тормозах WPF при большом количестве записей, что на самом деле не так. Тормоза, видимо, связаны просто с загрузкой большого объёма данных в модель, WPF тут тормозов не добавляет. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2017, 16:13 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Petro123Алексей КА люди все одинаковые. Обычному человеку не нужно обновление UI 1000 раз в секунду. IMHO по простому логика сообщений должна быть такая: - основной поток загружает табличку и дал команду на загрузку коллекции - на OnShow показал что успело загрузиться БЕЗ ТОРМОЗОВ - в доп потоке продолжает грузится но основной поток не трогается - только при скроллинге берётся новая порция самим гридом, а не коллекция пихает в грид порции.И так можно. Думаю, что здесь разные способы имеют право на жизнь. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2017, 16:32 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Алексей КPetro123Алексей К, Отсюда вопрос прежний. Все в десктопе пишут самописки как на хабре или ставят галку по вашей ссылке? Или у всех телерик с интерфейсом VirtualQueryableCollectionView<T>Мы похоже говорим немного о разных вещах. 1. Ленивая загрузка данных с сервера - отсутствует, кому надо, те пишут велосипеды "как на хабре". Это то, чего ты хочешь, как я понял. 2. Виртуализация записей WPF - в большинстве контролов по умолчанию включена, в этом режиме создаются контейнеры только для отображаемых записей. Я упомянул об этом из-за того, что выше говорилось о тормозах WPF при большом количестве записей, что на самом деле не так. Тормоза, видимо, связаны просто с загрузкой большого объёма данных в модель, WPF тут тормозов не добавляет. Я автор ищем способы чтобы табла в ГУИ не тормозила. Правда он называет это словом заморозка, а слово ленивая я от тебя здесь первый раз услышал. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2017, 17:36 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Алексей КТормоза, видимо, связаны просто с загрузкой большого объёма данных в модель, WPF тут тормозов не добавляет. Вот и пойми вас. Конечно, тормоза связаны с загрузкой в модель, т.к. тянуть на клиента сразу всю таблу накладно. Ну, давай не про WPF, а целиком про платформу. Т.к. большие таблицы везде есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2017, 17:39 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Алексей КИ так можно. Думаю, что здесь разные способы имеют право на жизнь. :-) OK Ищем Минимальный код для Больших таблиц чтобы не тормозило. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2017, 17:43 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Алексей Кразные способы почитал в сети. Немного другой код получается при редактировании коллекции с клиента на сервер при больших списках. Будет ошибка кода доступа к объекту из потока где он не был создан. Получается, что если только читаем, то код там должен быть простой как 5 копеек. Если с редактированием, то нужно перебрасывать из потокового списка коллекции в коллекцию биндинга в потоке ГУИ. Получается 2 варианта кода imho. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2017, 17:47 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Petro123Алексей КИ так можно. Думаю, что здесь разные способы имеют право на жизнь. :-) OK Ищем Минимальный код для Больших таблиц чтобы не тормозило.Мне видится развитие концепции, предложенной ТС. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Код: 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. 49. 50. 51. 52. 53. 54. 55. 56. 57.
Код: 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.
Код: xml 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2017, 10:21 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Алексей КPetro123OK Ищем Минимальный код для Больших таблиц чтобы не тормозило.Мне видится развитие концепции, предложенной ТС. по моему - идеально. Ни убрать, ни добавить. И страшных слов invoke вроде бы нету). Спс. за один из методов решения сабжа. ЗЫ Обилие слов await (старт потока) тут явно из за БД сиквела и дров от этой БД (cmd.ExecuteReaderAsync). У меня в проекте PosgreSQL (нету XXXXAsync), поэтому вероятно будет 1 поток и одно слово await. 20809489 Ну, и интересен пример с EF. Это ведь прогрессивно). ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2017, 14:33 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Petro123Ну, и интересен пример с EF. Это ведь прогрессивно). Интересно, как EF справится с PG. Иначе прогрессивность сама себя вывернет наружу (хотя ей не привыкать). ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2017, 17:01 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныPetro123Ну, и интересен пример с EF. Это ведь прогрессивно). Интересно, как EF справится с PG. Иначе прогрессивность сама себя вывернет наружу (хотя ей не привыкать).Думаю, что справится. При первой возможности попробую набросать пример. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2017, 17:37 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Petro123Алексей Кпропущено... Мне видится развитие концепции, предложенной ТС. по моему - идеально. Ни убрать, ни добавить. И страшных слов invoke вроде бы нету). Спс. за один из методов решения сабжа. ЗЫ Обилие слов await (старт потока) тут явно из за БД сиквела и дров от этой БД (cmd.ExecuteReaderAsync). У меня в проекте PosgreSQL (нету XXXXAsync), поэтому вероятно будет 1 поток и одно слово await. 20809489 Ну, и интересен пример с EF. Это ведь прогрессивно).Продолжение, следующее за await, по дефолту выполняется через контекст синхронизации, в глубинах которого живёт Dispatcher.BeginInvoke (аналог PostMessage из winapi). Если контекст синхронизации отсутствует или отключен через .ConfigureAwait(false), то продолжение выполняется через пул потоков. Базовые СУБД-независимые классы DbCommand и т. п. имеют асинхронные методы, вроде как все современные провайдеры СУБД это так же должны поддерживать. Уточни версию .Net Framework, должен быть 4.5+. Ну и пример под EF сделаю при первой возможности, самому интересно стало. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2017, 17:55 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Алексей КБазовые СУБД-независимые классы DbCommand и т. п. имеют асинхронные методы, тут такая штука: У меня в своём проекте есть асинхронность не для таблицы, а для добавления слоёв из базы в ГИС карту. И на строке Task.Run { } создаётся поток в цикле. Т.е. если поток создаётся, то нафига мне плодить ещё поток на коннект, на command и на реадер? Код: c# 1. 2. 3. 4. 5. 6.
Масло масляное или оверхед, я так понимаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2017, 19:34 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныИнтересно, как EF справится с PG Если PG это Postgre, то ниже описал, что сейчас всё работает если брать непотоковый код к базе и запускать его в потоке. Не уточнял, потокозащищённый ли сам драйвер к базе. Пока все ошибки что есть ловятся выше драйвера. Например, общая коллекция Dictionary меняю на ConcurrentКоллекцию и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2017, 19:41 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныPetro123Ну, и интересен пример с EF. Это ведь прогрессивно). Интересно, как EF справится с PG. Иначе прогрессивность сама себя вывернет наружу (хотя ей не привыкать).Сразу неправильно понял, что такое PG. :-) EF с PosgreSQL справляется нормально. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2017, 05:24 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Petro123, версия с EF. Код: 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. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2017, 05:43 |
|
Async Loading от Стивена Клири
|
|||
---|---|---|---|
#18+
Petro123Алексей КБазовые СУБД-независимые классы DbCommand и т. п. имеют асинхронные методы, тут такая штука: У меня в своём проекте есть асинхронность не для таблицы, а для добавления слоёв из базы в ГИС карту. И на строке Task.Run { } создаётся поток в цикле. Т.е. если поток создаётся, то нафига мне плодить ещё поток на коннект, на command и на реадер? Код: c# 1. 2. 3. 4. 5. 6.
Масло масляное или оверхед, я так понимаю.При таком использовании Task.Run начало и все продолжения, в том числе в вызываемых методах, выполняются через пул потоков, независимо от наличия контекста синхронизации. Иногда это бывает полезно. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2017, 05:57 |
|
|
start [/forum/search_topic.php?author=%D0%A4%D0%BE%D1%80%D0%BC%D1%81%D0%BE%D1%84%D0%BE%D0%B1&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
160ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
136ms |
get tp. blocked users: |
1ms |
others: | 599ms |
total: | 962ms |
0 / 0 |