Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > WPF, UWP, WinRT, XAML
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 01.02.2016, 00:59   #11
chugada
Пользователь
 
Регистрация: 31.01.2016
Сообщений: 17
Репутация: 10
По умолчанию

Цитата:
Картинки фризятся?
нет, просто
<Image Source="Resources/image.png" Height="13" Width="47" VerticalAlignment="Center" HorizontalAlignment="Center">
но есть ректанглы в которых из ресурсов рисуются "картинки" ввиде путей
<Rectangle.Fill>
<VisualBrush Visual="{StaticResource res1}"/>
</Rectangle.Fill>

Цитата:
А профайлер запускали?
а как?
chugada вне форума   Ответить с цитированием
Старый 01.02.2016, 01:22   #12
chugada
Пользователь
 
Регистрация: 31.01.2016
Сообщений: 17
Репутация: 10
По умолчанию

Убрали все колонки, оставили одну где просто биндятся данные
Код:

<DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding Data, StringFormat={}{0}%}" HorizontalAlignment="Right"/>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>

тормоза маленькие но все же есть, что за такое, в гриде прописали
EnableRowVirtualization="True" VirtualizingStackPanel.Virtualizati onMode="Recycling"
не помогает
chugada вне форума   Ответить с цитированием
Старый 01.02.2016, 02:28   #13
chugada
Пользователь
 
Регистрация: 31.01.2016
Сообщений: 17
Репутация: 10
По умолчанию

Хоть бери и браузер встаивай. в нем все тоже самое работает без вопросов.
chugada вне форума   Ответить с цитированием
Старый 01.02.2016, 10:50   #14
Luuzuk
Участник клуба
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Адрес: Самара
Сообщений: 975
Репутация: 605

icq: З7ЧЗЗ89Ч5
По умолчанию

Тяжелый случай, видимо загвоздка не на поверхности лежит

На хабре была довольно хорошая статья про штатный профайлер студии
https://habrahabr.ru/post/98361/

Также можно попробовать dotTrace от JetBrains, там 10 дневная триалка есть
https://www.jetbrains.com/profiler/

А то без профилирования искать узкое место в производительности можно доооолго )
__________________
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума   Ответить с цитированием
Старый 01.02.2016, 16:38   #15
chugada
Пользователь
 
Регистрация: 31.01.2016
Сообщений: 17
Репутация: 10
По умолчанию

Так не понятно в производительности ли дело.
Оставили 1 колонку, пересоздаем коллекцию, виртуализация выставлена, все равно
например нажимаешь в момент обновления на какую либо кнопку или просто что что делаешь в гуи, и видно как все "замерзает".. никакой реакции.
Попробовали с ListView тоже самое.

Подскажите, работаем в 2015 студии, в меню Analyze нет никаких Performace Wizard или что то подобного, их надо както отдельно установить или они в другом месте или в чем причина?

Последний раз редактировалось chugada; 01.02.2016 в 16:40.
chugada вне форума   Ответить с цитированием
Старый 01.02.2016, 17:00   #16
Luuzuk
Участник клуба
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Адрес: Самара
Сообщений: 975
Репутация: 605

icq: З7ЧЗЗ89Ч5
По умолчанию

Цитата:
Так не понятно в производительности ли дело.
оставлю без комментариев...

Цитата:
в меню Analyze нет никаких Performace Wizard или что то подобного,
Цитата:
Также можно попробовать dotTrace от JetBrains, там 10 дневная триалка есть
https://www.jetbrains.com/profiler/
или можем договориться на сдельной основе о поиске причины торможения
__________________
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума   Ответить с цитированием
Старый 01.02.2016, 17:39   #17
chugada
Пользователь
 
Регистрация: 31.01.2016
Сообщений: 17
Репутация: 10
По умолчанию

С Performace Wizard разобрались, сейчас будем пробовать.

Попутно браузер встроили, попробовали с ним, весьма впечатляет.

Посмотрим на итоги анализа, потом будем решать что делать.
chugada вне форума   Ответить с цитированием
Старый 01.02.2016, 18:50   #18
Akeloya
Форумчанин
 
Регистрация: 27.01.2014
Адрес: Новосибирск
Сообщений: 115
Репутация: 75
По умолчанию

А почему вы не используете ObjectDataSource c включенным IsAsync=true?
Добавлять данные в грид не придется, за вас это сделают обработчики. Ваша задача только добавлять данные в коллекцию через BeginInvoke из потока прослушивания

Код:

<DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding Data, StringFormat={}{0}%}" HorizontalAlignment="Right"/>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>

Почему вы не используете стандартный тип колонки? биндинг и там можно указать такой же как вы написали, но при этом не используются лишние контейнеры, как у вас.

Код:

Dispatcher.BeginInvoke((Action)(() =>
{
                        this.Collection.Clear();

                        foreach (var item in sourсe)
                        {
                            this.Collection.Add(item);
                        }
}));

Это вы в грид напрямую пишите? Если да, выкиньте этот код и идите в сторону ObjectDataSource, напрямую в грид, т.е. в гуи вы ничего не должны писать.
Akeloya вне форума   Ответить с цитированием
Старый 01.02.2016, 19:21   #19
chugada
Пользователь
 
Регистрация: 31.01.2016
Сообщений: 17
Репутация: 10
По умолчанию

Да какая разница какая колонка? ну тут можно, а в других навароты больше с тригерами и мультибиндингами, если оно при даже таком пидалит то что говорить о других?
Цитата:
Это вы в грид напрямую пишите?
я же в теме написал что это, ObservableCollection и в грид она биндится вот так
ItemsSource="{Binding Collection}", mvvm тут. Не принципиально это все, можно и лист простой подкидывать, раз уж все равно пересоздаем.
Осталось еще вообще отказаться от DataGrid и рисовать самим без биндингов.

Попробовали анализом пройти, упираемся в PresentationFramework и всё.
chugada вне форума   Ответить с цитированием
Старый 01.02.2016, 21:30   #20
Akeloya
Форумчанин
 
Регистрация: 27.01.2014
Адрес: Новосибирск
Сообщений: 115
Репутация: 75
По умолчанию

На мсдн советуют отвязывать данные от грида на момент обновления коллекции, а затем снова привязывать, после того, как коллекция полностью сформирована.

Т.е. смысл сводится к тому, чтобы дергать UI не каждый раз при добавлении элемента в коллекцию, а один раз на всю коллекцию. Но тут есть мнение, что оно особо не поможет.

Плюс вы писали, что в каждой строчке у вас картинки есть, вы с ними что-нибудь делали?
https://msdn.microsoft.com/ru-ru/lib...v=vs.110).aspx
Akeloya вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[C# + WPF] Отлов нажатий клавиш, хуки, горячие клавиши в проекте WPF Casper-SC WPF, UWP, WinRT, XAML 3 03.03.2017 16:00
КАк создать ГУИ интерфейс без среды? Алексей_2012 Общие вопросы C/C++ 5 12.01.2016 08:20
Обновление таблицы БД SqlLite - C# WPF Notan1310 WPF, UWP, WinRT, XAML 4 08.10.2015 15:34
WPF/ Обновление ItemsSource-а ShoGUN WPF, UWP, WinRT, XAML 0 02.06.2014 18:34


13:43.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru