Ciao a tutti.

come da oggetto, ottengo un'OutOfMemoryException quando cerco di caricare in una list una serie di immagini per successiva trasformazione in array e visualizzazione.
Le immagini sono prese da una DataTable precedentemente popolata con apposita Query
Il problema è che l'eccezione viene generata quando la routine che carica le immagini nella list viene eseguita la seconda volta. Nessuna eccezione viene generata alla prima esecuzione.
Ciò mi fa capire che la memoria è abbastanza per completare correttamente l'operazione, ma mi sto dimenticando di liberare risorse inutilizzate da qualche parte e alla seconda chiamata la memoria è effettivamente esaurita.

Solo che non riesco a capire dove, né come.

Ovviamente la DataTable è identica ogni volta (non più di 120 MB).
Altro indizio: se riduco la DataTable NON ottengo più l'eccezione, quindi credo che sia veramente un problema di memoria esaurita.

Sono ad un punto morto.
Ringrazio anticipatamente tutti gli utenti del forum, ed in maniera particolare chi volesse darmi un piccolo aiuto per risolvere il problema.

Di seguito il codice incriminato.

codice:
Public Structure tileImage
        ...
        Dim tile_image As Drawing.Image
        ...
    End Structure

    Public Structure tileServer

        Dim tile_images As tileImage()
        ...
 
        Sub initializeTileServer(ByVal inputDataTable As DataTable)
            Dim tileList As New List(Of tileImage)
            Dim myTile As tileImage
            Dim myBytesBuffer As Byte()
            Dim myMemoryStream As IO.MemoryStream
            
            ' riduco l'array (magari precedentemente popolato) a un array nullo
            Me.tile_images = {} 

            ' scorro tutta la datatable
            For i = 0 To inputDataTable.Rows.Count - 1 
                        ' carico lo stream di byte
                        myBytesBuffer = inputDataTable.Rows(i).Item("raster_image") 
                        ' metto lo stream in un nuovo memorystream 
                        myMemoryStream = New IO.MemoryStream(myBytesBuffer, 0, myBytesBuffer.Length) 

                        ' riduco l'array a un array nullo                
                        myBytesBuffer = {} 

'**** QUI OTTENGO L'OUTOFMEMORY EXCEPTION (LA SECONDA VOLTA) ****
                        ' genero l'immagine dallo stream
                        myTile.tile_image = System.Drawing.Image.FromStream(myMemoryStream) 
'***********************************************************
                        ' libero la risorsa
                            myMemoryStream.Dispose() 

                        ' aggiungo l'immagine generata alla list
                        tileList.Add(myTile) 

            Next

            ' ritrasformo la lista in un array, ripopolando così l'array
            tile_images = tileList.ToArray 

            ' elimino tutti gli elementi dalla lista
            tileList.Clear() 

        End Sub
Lorenzo