Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > WPF, UWP, WinRT, XAML
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.01.2012, 17:16   #1
graffinchik
 
Регистрация: 26.01.2012
Сообщений: 8
По умолчанию WPF тормозит интерфейс.

Проблема вот в чем.
Сразу при открытии программы все работает шустро.
Программа запрашивает с сервера объемный список информации, после отображения которой в ListView, интерфейс программы начинает жестко тормозить на различных ивентах. Т.е. когда программа просто "стоит", процессор на нулях, а когда начинаешь например кликать мышкой по пустому месту на форме или открывать обычное меню, то процессор начинает жестко забиваться. Не смотря на то, что отрисовка списка и его листание идет очень даже хорошо. Тормозит все остальное.
Через тулу Visual Profiler мне удалось узнать, что процессор занимает "Dispatcher Invoke". В программе диспетчер используется. но даже если его убрать, ничего не меняется в производительности. В чем еще может быть проблема? может кто сталкивался с подобной? очень нужна помощь. Заранее огромное спасибо.
Через программку Snoop показало, что левых ивентов не генерируется. Теперь я вообще в замешательстве...
graffinchik вне форума Ответить с цитированием
Старый 27.01.2012, 09:36   #2
Guy
Форумчанин
 
Регистрация: 15.12.2010
Сообщений: 398
По умолчанию

А что если тебе запустить Perfemence Profiler студийный и поглядеть участок(ки) кода которые сама студия скажет в твоих исходниках.
Guy вне форума Ответить с цитированием
Старый 27.01.2012, 11:11   #3
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

в ListView данных говоришь много? Если так, то у ListView в Xaml-коде пропиши VirtualizingStackPanel.IsVirtualizi ng="true". Иначе очень много времени будет тратиться именно на перерисовку листвью (в основном на подсчет высоты элементов)
Благодарить в репутацию. Проклинать — туда же

Последний раз редактировалось Luuzuk; 27.01.2012 в 11:15.
Luuzuk вне форума Ответить с цитированием
Старый 27.01.2012, 12:17   #4
graffinchik
 
Регистрация: 26.01.2012
Сообщений: 8
По умолчанию

Проблема не в ListView. Вернее не в его отрисовке. И кстати он виртуализирован, листается отлично. Проблема во всем остальном интерфейсе. программа просто начинает грузить i5 на 20-25% при элементарных быстрых кликах по пустому месту форме, что не есть правильно.
graffinchik вне форума Ответить с цитированием
Старый 27.01.2012, 12:23   #5
graffinchik
 
Регистрация: 26.01.2012
Сообщений: 8
По умолчанию

Perfemence Profiler попробовал. Он мне показал, что кушает процессор функция system.windows.Application.Run().
graffinchik вне форума Ответить с цитированием
Старый 27.01.2012, 12:24   #6
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Телепатические способности кончились, теперь нужен код
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 27.01.2012, 12:26   #7
graffinchik
 
Регистрация: 26.01.2012
Сообщений: 8
По умолчанию

тут кода....объемом с полфорума. проект большой. а вот ошибка какая-то необыкновенная.
graffinchik вне форума Ответить с цитированием
Старый 27.01.2012, 12:36   #8
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Я и не прошу весь солюшн выкладывать
вьюхи и вьюмодели может оказаться достаточно.
Просто сам частенько упирался в производительность wpf/silverlight
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 27.01.2012, 12:45   #9
graffinchik
 
Регистрация: 26.01.2012
Сообщений: 8
По умолчанию

Проблема я полагаю в чем.
Чем меньше элементов в список я загружаю, тем лучше работает программа. просто такое ощущение, что при любом ивенте каждый элемент списка пытается его отработать. но такого мне ни одна тула не показало. но тут возникает вопрос! как элементы могут на них реагировать, если я не по ним кликаю, а вообще по пустому месту?
И повторюсь. Сам список, т.е. его листание, работает нормально.
graffinchik вне форума Ответить с цитированием
Старый 27.01.2012, 13:17   #10
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Есть такая вещь в WPF, как RoutedEvents. Без кода вам здесь вряд ли помогут
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[C# + WPF] Отлов нажатий клавиш, хуки, горячие клавиши в проекте WPF Casper-SC WPF, UWP, WinRT, XAML 3 03.03.2017 15:00
разработать интерфейс для дисков - интерфейс програмный Notformal Помощь студентам 0 01.11.2011 22:52
Динамический интерфейс WPF MaxMelnikov Помощь студентам 0 21.01.2011 17:09
класс Screen в WPF. Есть ли такой? [?] Не добавлять же сборку Forms в WPF Casper-SC Общие вопросы .NET 2 30.07.2010 15:10