Dynamic Controls (on same thread)

                         Dim pictWeather As New PictureBox

                        Dim pictTemp As New PictureBox
                        Dim pictDayOfWeek As New PictureBox

                        pictWeather.Size = New Size(32 + 10, 32)
                        pictTemp.Size = New Size(20, 14)
                        pictDayOfWeek.Size = New Size(19, 14)

                        pictWeather.Image = My.Resources.ResourceManager.GetObject((GetResourceID(Split(sString, "|")(0))))

                        pt.X = (pictWeather.Width * x) '+10
                        pt.Y = pictWeather.Height * 0
                        'createTextImage

                        pictWeather.Location = pt
                        ' pt.Y = pt.Y * 1
                        Panel3.Controls.Add(pictWeather)
                        pt.X = (pictWeather.Width * x) '+10
                        pt.Y = pictWeather.Height * 1

                        pictTemp.Location = pt
                        pictTemp.Image = ((createTextImage(Split(sString, "|")(1), Color.Black)))
                        Panel3.Controls.Add(pictTemp)

                        pt.X = (pictWeather.Width * x) '+10
                        pt.Y = pictWeather.Height + pictTemp.Height + 5


                        pictDayOfWeek.Location = pt
                        pictDayOfWeek.Image = createTextImage(Strings.Left(Now.AddDays(x).DayOfWeek.ToString, 2), Color.Black)

                        Panel3.Controls.Add(pictDayOfWeek)

Add Resources to List


  Dim runTimeResourceSet As Object
       Public lstOfWeatherIcons As New List(Of String)
       
        runTimeResourceSet = My.Resources.ResourceManager.GetResourceSet(System.Globalization.CultureInfo.CurrentCulture, False, True)
        For Each dictEntry In runTimeResourceSet
            If (dictEntry.Value.GetType() Is GetType(Bitmap)) Then
                Console.WriteLine(dictEntry.Key)
                lstOfWeatherIcons.Add(dictEntry.Key)
            End If
        Next

Timer example to update images

   
     Private Sub Timer3_Tick(sender As Object, e As EventArgs) Handles Timer3.Tick
        Try
            pictWeather.Image = My.Resources.ResourceManager.GetObject((GetResourceID(GetCurrentWeather())))
            pictTemp.Image = createTextImage(GetCurrentTemp, Color.White)
        Catch ex As Exception
            pictWeather.Image = Nothing
            pictTemp.Image = createTextImage("-", Color.White)
        End Try
  End Sub

Get Resource ID Example (dynamically)


    Function GetResourceID(sText As String) As String
        Dim sResult As String = lstOfWeatherIcons.Find(Function(value As String) Strings.Left(value, 5) = "_" & sText)
        Return sResult
    End Function

Garbage Collection

GC.collect