Hey all i have about 30 pictureboxes on my win form. It populates images every time a new song gets played (think of it as "previous played list").

The pictureboxes look like so on the form (3 row of 10)
Code:
     ___  ___  ___  ___  ___  ___  ___  ___  ___  ___
     | |  | |  | |  | |  | |  | |  | |  | |  | |  | |
     ---  ---  ---  ---  ---  ---  ---  ---  ---  ---

     ___  ___  ___  ___  ___  ___  ___  ___  ___  ___
     | |  | |  | |  | |  | |  | |  | |  | |  | |  | |
     ---  ---  ---  ---  ---  ---  ---  ---  ---  ---

     ___  ___  ___  ___  ___  ___  ___  ___  ___  ___
     | |  | |  | |  | |  | |  | |  | |  | |  | |  | |
     ---  ---  ---  ---  ---  ---  ---  ---  ---  ---
This is how i am going about populating the pictureboxes on the form:
Code:
    Private Sub getAlbumArt()
        ...lots of code in here

        If lblArtist.Text <> prevArtiest Then
            prevArtiest = lblArtist.Text
            AddHandler clearPrevPlayed.DoWork, AddressOf clearPrevPlayed_DoWork
            AddHandler clearPrevPlayed.RunWorkerCompleted, AddressOf clearPrevPlayed_RunWorkerCompleted

            clearPrevPlayed.RunWorkerAsync()
        End If
    End Sub

    Private Sub clearPrevPlayed_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs)
        For Each ctlControl In Me.Controls
            If TypeName(ctlControl) = "PictureBox" Then
                If InStr(ctlControl.name, "previous_") <> 0 Then
                    ctlControl.Image = Nothing
                    ctlControl.Controls.Clear()
                    ctlControl.dispose()
                End If

                If InStr(ctlControl.name, "previousSong_") <> 0 Then
                    ctlControl.Image = Nothing
                    ctlControl.Controls.Clear()
                    ctlControl.dispose()
                End If
            End If

            Application.DoEvents()
        Next ctlControl
    End Sub

    Private Sub clearPrevPlayed_RunWorkerCompleted(ByVal sender As Object, ByVal e As RunWorkerCompletedEventArgs)
        Call buildPrePlayed(lblArtist.Text)
    End Sub

    Private Sub buildPrePlayed(ByVal theArtest As String)
        Dim intX As Integer = 0
        Dim tmpNewImg(30) As PictureBox
        Dim tmpNewImgPlaceholder(30) As PictureBox
        Dim thePicsNames(30) As String
        Dim filePaths As Linq.IOrderedEnumerable(Of IO.FileInfo) = New DirectoryInfo(Application.StartupPath & "\cdcovers").GetFiles().OrderByDescending(Function(f As FileInfo) f.LastWriteTime)

        For Each fi As IO.FileInfo In filePaths
            If InStr(fi.Name, "_small") <> 0 And intX <= 30 Then
                thePicsNames(intX) = (fi.Name)
                intX += 1
            End If
        Next

        intX = 0

        Do Until intX = 30
            Dim newImgPlaceholder As New PictureBox
            Dim newImg As New PictureBox

            If thePicsNames(intX) <> "" Then
                newImgPlaceholder.Visible = True
                newImgPlaceholder.Image = My.Resources.cdPlaceHolder
            Else
                newImgPlaceholder.Image = My.Resources.BLANK
                newImgPlaceholder.Visible = False
            End If

            newImgPlaceholder.Size = New System.Drawing.Size(130, 130)
            newImgPlaceholder.BorderStyle = BorderStyle.None

            If intX = 0 Then
                newImgPlaceholder.Location = New Point(145, 600)
            ElseIf intX >= 1 And intX < 10 Then
                newImgPlaceholder.Location = New Point((tmpNewImgPlaceholder(intX - 1).Left + 160), 600)
            ElseIf intX = 10 Then
                newImgPlaceholder.Location = New Point(145, 760)
            ElseIf intX >= 10 And intX <= 19 Then
                newImgPlaceholder.Location = New Point((tmpNewImgPlaceholder(intX - 1).Left + 160), 760)
            ElseIf intX = 20 Then
                newImgPlaceholder.Location = New Point(145, 920)
            ElseIf intX >= 21 And intX <= 29 Then
                newImgPlaceholder.Location = New Point((tmpNewImgPlaceholder(intX - 1).Left + 160), 920)
            End If

            newImgPlaceholder.BackColor = Color.Transparent
            newImgPlaceholder.Name = "previous_" & intX

            If thePicsNames(intX) <> "" Then
                newImg.Visible = True
                newImg.Image = Image.FromFile(Application.StartupPath & "\cdcovers\" & thePicsNames(intX))
            Else
                newImg.Image = My.Resources.BLANK
                newImg.Visible = False
            End If

            newImg.Size = New System.Drawing.Size(120, 120)
            newImg.BorderStyle = BorderStyle.None

            If intX = 0 Then
                newImg.Location = New Point(150, 605)
            ElseIf intX >= 1 And intX < 10 Then
                newImg.Location = New Point((tmpNewImg(intX - 1).Left + 160), 605)
            ElseIf intX = 10 Then
                newImg.Location = New Point(150, 765)
            ElseIf intX >= 10 And intX <= 19 Then
                newImg.Location = New Point((tmpNewImg(intX - 1).Left + 160), 765)
            ElseIf intX = 20 Then
                newImg.Location = New Point(150, 925)
            ElseIf intX >= 21 And intX <= 29 Then
                newImg.Location = New Point((tmpNewImg(intX - 1).Left + 160), 925)
            End If

            newImg.BringToFront()
            newImg.Name = "previousSong_" & intX

            Me.Controls.Add(newImg)
            Me.Controls.Add(newImgPlaceholder)

            tmpNewImg(intX) = newImg
            tmpNewImgPlaceholder(intX) = newImgPlaceholder

            intX += 1
        Loop

        RemoveHandler clearPrevPlayed.DoWork, AddressOf clearPrevPlayed_DoWork
        RemoveHandler clearPrevPlayed.RunWorkerCompleted, AddressOf clearPrevPlayed_RunWorkerCompleted
    End Sub
I have tried:
Code:
    If InStr(ctlControl.name, "previous_") <> 0 Then
         ctlControl.Image = Nothing
         ctlControl.Controls.Clear()
         ctlControl.dispose()
    End If
This does not seem to dispose the images as it loops... it doesn't even seem to find the pictureboxes on the form? When i stop my form and then start it again it populates the image just fine. Keep in mind that each image is grab as the song plays so its not due to it not having the image ready to place in the list - its an average of 3 minutes per song so thats plenty of time to grab the image and save it.

It seems to not be finding the picturebox controls that i programmable coded onto the form...

Any help would be great.. I'm sure its just something simple that i am missing...