Я действительно в растерянности по этому поводу. У меня есть расширитель, который содержит ItemsControl, который выглядит примерно так:
<ItemsControl ItemsSource="{Binding Source={StaticResource SomeItems}}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<ContentControl Content="{Binding}" />
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Это прекрасно воспроизводится при расширении на большинстве машин (одно- и двухъядерные). По какой-то причине при работе на новой машине с четырехъядерным процессором (i7) расширение этого расширителя занимает считанные минуты. Я сделал некоторые профилирования, и кажется, что есть проблемы синхронизации потоков, когда WPF измеряет элементы, фактическое время, затрачиваемое на измерение и рендеринг, кажется незначительным, время, затрачиваемое на ожидание синхронизации потоков, составляет большую часть этого. Кто-нибудь еще видел что-нибудь подобное?
К вашему сведению - я пытался сделать это на трех разных четырехъядерных (i7) машинах, и у меня возникла та же проблема. Без проблем работает на многих старых машинах. Я подтвердил, что машины полностью исправлены и что WPF использует аппаратный рендеринг. Сделали обязательную переустановку приложения и фреймворка.
Какие-нибудь идеи, где еще искать?
Спасибо
- некоторые обновления из комментариев -
- как только расширитель был расширен, разрушен и повторно -расширение происходит быстро на проблемных машинах
-всем когда аппаратный рендеринг отключен, поведение остается тем же. Я думаю, что это должно удалить графическую карту из уравнения.
-Мы работаем .Net 4.0
- Некоторые спецификации по запросу - Win XP SP 3 on Intel Core i7 (4 cores) M 620 @ 2.67GHZ 2.98 GB of RAM 275 GB available storage