167 messaggi dal 22 giugno 2008
Salve. Ho realizzato un applicativo silverlight che effettua una chiamata ad un web service che restituisce circa 3000 records.
Il tempo di attesa dall'inizio della chiamata al riempimento di una listbox è praticamente improponibile. Con asp.net la stessa operazione richiede circa un quinto del tempo... Sbaglio io qualcosa oppure è una limitazione di silverlight?



Ps: La proprietà ItemsSource della listbox chiamata ElencoView viene settata in questo modo, quando il servizio restituisce i dati.


    Private Sub ws_ListReceived(ByVal result() As ServiceControllerCore.AnagraficaWebService.BLAnagrafica) Handles ws.ListReceived
        ElencoView.ItemsSource = result
    End Sub


e questo è lo xaml:
<ListBox Name="ElencoView"  SelectedValuePath="IDItem" >
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Text="{Binding Descrizione}" />
                            <TextBlock Padding="5,0,5,0" Text="{Binding Cognome}"/>
                            <TextBlock Padding="5,0,5,0"  Text="{Binding Nome}"/>
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
                </ListBox>
Dipende da dove riscontri la lentezza...se è nella parte di rendering quindi tra associazione itemssource e risultato visivo o tra la chiamata e la risposta del servizio.... in ogni caso forse ti conviene gestire una paginazione....

MCTS: Silverlight 4, Development
167 messaggi dal 22 giugno 2008
La lentezza è certamente nel rendering! Ho verificato i tempi di risposta del servizio e sono accettabilissimi... Ho anche dimenticato di menzionare che una volta riempita la listbox, l'applicativo subisce un pauroso rallentamento (diventa inutilizzabile).
Come vedete, il codice che uso è molto semplice: non credo che sto combinando casini... quindi credo che questa lentezza sia in qualche modo legata al meccanismo di rendering o gestione della memoria di silverlight. Me lo potete confermare?? A voi è mai capitato??
deckman ha scritto:
La lentezza è certamente nel rendering! Ho verificato i tempi di risposta del servizio e sono accettabilissimi... Ho anche dimenticato di menzionare che una volta riempita la listbox, l'applicativo subisce un pauroso rallentamento (diventa inutilizzabile).
Come vedete, il codice che uso è molto semplice: non credo che sto combinando casini... quindi credo che questa lentezza sia in qualche modo legata al meccanismo di rendering o gestione della memoria di silverlight. Me lo potete confermare?? A voi è mai capitato??

Ciao,
potresti provare a dichiarare "fuori" il DataTemplate?
In passato si parlava di memory leak legato a questo scenario, ma mi sembrava che fosse risolto nella GDR3 di SL4.. Fammi sapere.

Comunque 3000 righe sono troppe, spiegalo al tuo committente che tanto non riesce a leggerle tutte insieme :D :D

Alessio Leoncini (SilverlightItalia.com)
.NET Developer, Interactive Designer, UX Specialist, Trainer @ 5DLabs.it
Il problema non è banale, spostando fuori la dichiarazione del datatemplate non credo che tu risolva, il problema secondo me non è il template ma la quantità di oggetti che si porta dietro itemssource, e non credo neanche che il problema sia il rendering vero e proprio ma bensì tra il rendering e l'itemssource, questo perchè in teoria i contenitori dei template sono virtualizedstackpanel quindi non credo che il problema sia la quantità di elementi visivi che vengono introdotti dentro la listbox, l'unica cosa che puoi fare secondo me è quella di creare un controllo custom che gestisce la scrollbar e gli elementi visualizzati, ci sono componenti di terze parti che risolvono questo problema

MCTS: Silverlight 4, Development

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC