Problemi di memoria con imagelist

di il
5 risposte

Problemi di memoria con imagelist

Sto cercando di importare una serie di immagini/icone (circa una trentina,al momento) in una imagelist da utilizzare successivamente con una listview.

Quando il ciclo arriva alla 28esima icona (del peso i 1,2 massimo 3 kb.) il sistema si blocca e mi dice che la memoria è insufficiente.

C'è qualcuno che ha avuto una simile esperienza o sappia come possa io risolvere? Grazie.

5 Risposte

  • Re: Problemi di memoria con imagelist

    Troppo generico.

    I motivi di un malfunzionamento simile sono infiniti e NON SONO sicuramente legati alle immagini  NE all'oggetto ImageList.

    Il pasticcio e' da qualche altra parte.

    Un possibile errore, ad esempio, e' quello di concatenare la lista con se stessa, di fatto RADOPPIANDONE la lunghezza. Questo vuol dire che dopo 27 iterazioni, la lista avra' 134_217_728 elementi, e questo si che puo' generare un errore del genere.

  • Re: Problemi di memoria con imagelist

    30/11/2023 - migliorabile ha scritto:


    Troppo generico.

    I motivi di un malfunzionamento simile sono infiniti e NON SONO sicuramente legati alle immagini  NE all'oggetto ImageList.

    Il pasticcio e' da qualche altra parte.

    Un possibile errore, ad esempio, e' quello di concatenare la lista con se stessa, di fatto RADOPPIANDONE la lunghezza. Questo vuol dire che dopo 27 iterazioni, la lista avra' 134_217_728 elementi, e questo si che puo' generare un errore del genere.

    Grazie,Migliorabile.

    Ecco il codice essenziale:

    Public Class Form1
        Dim il As New ImageList
        Dim j As Integer
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            For Each mieImg As String In My.Computer.FileSystem.GetFiles("C:\AreaPersonale\VbNet2019\Esercizi\Browser2_0\bin\Debug\Favicons\")
                ListBox1.Items.Add(mieImg)
                il.Images.Add(Image.FromFile(mieImg))
            Next
        End Sub
    End Class
  • Re: Problemi di memoria con imagelist

    Ho risolto,Migliorabile.

    L'errore veniva provocato una immagine di 0Kb.

    Scusate il disturbo.

  • Re: Problemi di memoria con imagelist

    Regoletta generale: quando si ricupera una risorsa ‘dall’ esterno' (in questo caso immagini da file) assicurati SEMPRE che la risorsa sia ‘valida’. 

    In generale, se la risorsa non e' valida, la funzione preposta per caricarla in memoria genera un errore/eccezione. 

    Tale errore/eccezione va intercettato e la corrispondente risorsa (invalida) scartata. 

    Cosa buona e' scrivere sul log che la risorsa e' stata scartata e il motivo. 

    Ad esempio: che succede se nella cartella delle immagini metti un file testo con estensione “. jpg”? 

    Oppure se l'immagine e' corrotta? 

  • Re: Problemi di memoria con imagelist

    Migliorabile! come non accettare il tuo consiglio! Però -senza inutili fingimenti- il problema è che non saprei proprio come controllare se una risorsa sia valida o meno.

    Non oso chiederlo, ma spero che di ricevere la Lei almeno un suggerimento.

Devi accedere o registrarti per scrivere nel forum
5 risposte