Torna al Thread
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