2010-08-19 16 views
6

Sono davvero in perdita su questo. Ho un expander che contiene un ItemsControl che assomiglia a questo;Il rendering di WPF rallenta con più processori

<ItemsControl ItemsSource="{Binding Source={StaticResource SomeItems}}"> 
    <ItemsControl.ItemTemplate>         
     <DataTemplate> 
     <StackPanel> 
      <ContentControl Content="{Binding}" /> 
     </StackPanel> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate>         
</ItemsControl> 

Questo rende bene quando si espande sulla maggior parte delle macchine (single e dual core). Per qualche ragione quando si esegue su una macchina nuova di zecca con un quad core (i7) espandendo questo expander prende in pochi minuti. Ho fatto un po 'di profilazione e sembra che ci siano problemi di sincronizzazione dei thread quando WPF sta misurando gli elementi, la misurazione della spesa in tempo reale e il rendering sembrano trascurabili, la spesa in attesa della sincronizzazione dei thread è la maggior parte di esso. Qualcun altro ha visto qualcosa di simile?

FYI - L'ho provato su tre diverse macchine quad core (i7) e ho lo stesso problema. Nessun problema con molte macchine precedenti. Ho confermato che le macchine sono completamente patchate e che WPF sta usando il rendering dell'hardware. Ho fatto l'applicazione obbligatoria e reinstallare la struttura.

Qualche idea dove altro da guardare?

Grazie

aggiornamenti --Alcuni da comments--

-once l'espansore è stato ampliato, collasso e ri-espansione sono veloci sulle macchine di problema

-anche quando rendering hardware è il comportamento disabilitato è lo stesso. Penso che dovrebbe rimuovere la scheda grafica dall'equazione.

-Ci sono in esecuzione .Net 4.0

--Alcune Spec come requested-- Win XP SP 3 su Intel Core i7 (4 core) M 620 @ 2.67GHZ 2.98 GB di RAM 275 GB di spazio disponibile

+0

Intendo davvero più core, non più processori –

+0

Le schede grafiche sono tutte identiche? Se no, questo sarebbe un posto dove guardare. – Russ

+0

Inoltre, anche quando il rendering dell'hardware è disabilitato, il comportamento è lo stesso. Penso che dovrebbe rimuovere la scheda grafica dall'equazione? –

risposta

1

Il mio primo pensiero sarebbe quello di togliere la scheda grafica dall'equazione il più possibile. Prova a disabilitare il tema Aero e torna a Windows di base.

Inoltre potresti pubblicare le specifiche complete delle macchine? Hardware, software, 32 vs 64 bit, versione .net, ecc ...

+0

Devo dire che stiamo eseguendo XP su tutte le macchine. –

+0

Inoltre, anche quando il rendering dell'hardware è disabilitato, il comportamento è lo stesso. Penso che dovrebbe rimuovere la scheda grafica dall'equazione? –

+2

@Christopherous, sì, sarei d'accordo. A questo punto, prenderei in considerazione la possibilità di archiviare un bug su http://connect.microsoft.com – JaredPar

Problemi correlati