|
Обновление UI во время выполнения Task
|
|||
---|---|---|---|
#18+
Добрый день! Возникла проблема с отображением процесса вычислений, выполняемых в Task. Хотелось бы отображать каждую секунду WriteableBitmap, который формируется в потоке, а поверх него DrawingGroup с текстовыми метками, линиями и тп. Как я понимаю, можно WriteableBitmap засунуть в DrawingGroup, но как это сделать корректно до завершения работы Task? Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2022, 12:01 |
|
Обновление UI во время выполнения Task
|
|||
---|---|---|---|
#18+
iobox отображением процесса вычислений, выполняемых в Task. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2022, 12:37 |
|
Обновление UI во время выполнения Task
|
|||
---|---|---|---|
#18+
iobox , у вас же, вроде, и так реализован показ wb в DispatcherTimer? Что не так с вашим кодом? Единственно немного по другому заморозку надо делать. Вероятность исключения, хоть и очень маленькая, в вашей реализации сохраняется. Код: c# 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2022, 13:14 |
|
Обновление UI во время выполнения Task
|
|||
---|---|---|---|
#18+
Shocker.Pro, спасибо, использую IProgress. Теперь то, что нужно. Eld Hasp, я хотел бы еще наложить сверху линии, метки и т.п. с помощью DrawingGroup, чтобы не заморачиваться с пикселами. А исключение, да, Вы правы. Честно говоря, я ожидал более быстрого формирования WriteableBitmap 10000 х 10000 точек, учитывая, что там пока даже логики нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2022, 15:26 |
|
Обновление UI во время выполнения Task
|
|||
---|---|---|---|
#18+
iobox, ну рендерить пикчу 10000 на 10000 это долго при любом раскладе вот можешь глянуть, в этом проекте рендерится пикча достаточно быстро мультипоточно в unsafe, это просто примерчик https://github.com/meytes/WPF.BitmapFire ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2022, 19:26 |
|
Обновление UI во время выполнения Task
|
|||
---|---|---|---|
#18+
iobox , WriteableBitmap - это DependecyObject. А в нём все долго. Всё таки основное предназначение этого типа создание контролов GUI и здесь большой скорости не требуется, но требуется очень много различной логики "на все случаи жизни". Даже просто присвоение/получение значения DP-свойству будет в сотни, если не тысячи раз медленнее чем обычному свойству. Если вам нужна скоростная графика, то вам нужно использовать какой-то движок специально предназначенный для этого. Например, OpenGL. Вот здесь есть ссылка о начальных шагах его использования: Инструкция. Добавляем OpenGL графику на WPF форму с помощью OpenTK.GLControl . На WPF для такого разрешения, я бы советовал вам другими средствами подготовить растровую графику в формате Bitmap. А уже потом его перевести в BitmapSource. Но 100 млн. пикселей (400 МБ) это, по моему, будет долго для любого способа. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2022, 01:40 |
|
Обновление UI во время выполнения Task
|
|||
---|---|---|---|
#18+
Eld Hasp iobox , WriteableBitmap - это DependecyObject. А в нём все долго. Всё таки основное предназначение этого типа создание контролов GUI и здесь большой скорости не требуется, но требуется очень много различной логики "на все случаи жизни". Даже просто присвоение/получение значения DP-свойству будет в сотни, если не тысячи раз медленнее чем обычному свойству. Если вам нужна скоростная графика, то вам нужно использовать какой-то движок специально предназначенный для этого. Например, OpenGL. Вот здесь есть ссылка о начальных шагах его использования: Инструкция. Добавляем OpenGL графику на WPF форму с помощью OpenTK.GLControl . На WPF для такого разрешения, я бы советовал вам другими средствами подготовить растровую графику в формате Bitmap. А уже потом его перевести в BitmapSource. Но 100 млн. пикселей (400 МБ) это, по моему, будет долго для любого способа. выше пример кидал с WriteableBitmap , картинка там рендерится через unsafe напрямую через память. по тому это фигня, вы сейчас дезинформируйте человека. WritebleBitmap это обычный bitmap заданного формата в памяти ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2022, 10:28 |
|
|
Start [/forum/topic.php?fid=21&fpage=1&tid=1440228]: |
0ms |
get settings: |
22ms |
get forum list: |
22ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
71ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
258ms |
get tp. blocked users: |
2ms |
others: | 319ms |
total: | 717ms |
0 / 0 |